home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d21 / rbcomm33.arc / RBCOMM.DOC < prev    next >
Text File  |  1991-02-02  |  97KB  |  2,306 lines

  1. RBcomm v3.31    Copyright (c) 1989, 1990, 1991 Ralf Brown  All Rights Reserved
  2.  
  3. You may redistribute this program provided that you provide unmodified
  4. copies of all files, and do not charge any fee for making the copy.
  5.  
  6.  
  7. RBcomm is a lean and mean comm program which will run in 45K without
  8. file transfer capability or 65K with file transfer capability. Since it
  9. is so lean, you will not get a lot of the fancy features of other comm
  10. programs, though there are plenty of features to let you get your work
  11. done (I've been using it exclusively for over three years, and have
  12. added features as I've found that I could be more productive with them
  13. than without).
  14.  
  15. Features:
  16.     small (runs in as little as 45K [65K with DSZ, 66K with Puma/MPt])
  17.         DESQview-aware
  18.         pop-up menus
  19.     seamless file transfer using DSZ, PCZ, or Puma/MPt
  20.     Zmodem and Puma/MPt autodownload (others easily added)
  21.     shell to DOS, using well under 1K while shelled
  22.         keyboard reassignment, powerful keystroke macros
  23.         20-number dialing directory
  24.     ANSI/VT102, VT52, and AVATAR level 0 terminal emulations
  25.        [UnixWindows and AVATAR level 1 partially implemented]
  26.         132-column support
  27.     supports the 16550A FIFOs
  28.     scrollback buffer
  29.  
  30. Registration:
  31.     Continued use of DSZ requires registration with Omen Technology, Inc.
  32.     See the DSZ documentation for details.
  33.  
  34.     Continued use of Puma/MPt requires registration with Matthew Thomas.
  35.     See the Puma or MPt documentation for details.
  36.  
  37.         If you like RBcomm, send me a picture postcard of some sight in your
  38.     area.  If you don't like RBcomm, feel free to send me a postcard
  39.     anyway, telling me what you don't like.  I just might change the
  40.     thing you don't like in the next release.
  41.  
  42. Support:
  43.     None (after all, I'm not getting any money for this).  I will try to
  44.     fix bugs as time allows.  When reporting a suspected bug, please
  45.     include as much detail as possible (such as a verbose log if it
  46.     involves the terminal emulation).
  47.  
  48. DISCLAIMER:  This software is distributed AS IS and without any express
  49.     or implied warranties.  The author disclaims all responsibility
  50.     for any damages which might be incurred as the result of using
  51.     or misusing* the program.  Although widely used by many people,
  52.     the software is not guaranteed to function on any system other
  53.     than the author's own. 
  54.       *RBcomm has the ability to overwrite or delete files, which can
  55.        result in data loss if used indiscriminately.
  56.  
  57.  
  58.         Ralf Brown
  59.     School of Computer Science
  60.         Carnegie Mellon University
  61.         Pittsburgh, PA 15213
  62.  
  63.     ARPA: ralf@cs.cmu.edu
  64.     UUCP: {harvard,ucbvax,uunet}!cs.cmu.edu!ralf
  65.     BIT:  ralf%cs.cmu.edu@cmuccvma
  66.     FIDO: Ralf Brown 1:129/3.1
  67.  
  68. Files in the RBcomm distribution archive:
  69.         RBCOMM.DOC      this file
  70.         COMM.COM        the RBcomm main program
  71.         RBCONFIG.COM    the configuration program
  72.     MACRO.COM    the keyboard macro compiler/decompiler
  73.     DVPWIDTH.COM    program to set maximum width in DESQview .DVP files
  74.         R?-PIF.DVP      DESQview program information files
  75.     *.MAC        keyboard macro definition sources
  76.         *.RBM           keyboard macro definition files
  77.     *.HLP        help screens for corresponding macro files
  78.  
  79. Availability:
  80.     The newest version is always available on:
  81.            SoundingBoard 1:129/26 File Requests
  82.            (412)621-4604
  83.            24 hours, USR HST 14.4
  84.  
  85.        Doctor's WOC Inn  1:129/53  File Requests
  86.        (412)881-7757
  87.        24 hours, USR HST 9600
  88.  
  89.        NorthStar Pitt 1:129/81 (same computer, different modem)
  90.        (412)881-1749
  91.        1200/2400
  92.  
  93.        CS.CMU.EDU [128.2.222.173]
  94.        directory /afs/cs.cmu.edu/user/ralf/pub
  95.        You must change directly to this directory due to the way our
  96.          anonymous FTP works.
  97.  
  98.     New versions will also be available here within a few days of release:
  99.        Rosedale Dataline
  100.        (301)866-4554
  101.        24 hours, USR HST 9600
  102.        TP Board
  103.  
  104.        Fidonet nodes participating in DVNet
  105.  
  106.        WSMR-SIMTEL20.ARMY.MIL [26.2.0.4]
  107.        directory PD:<MSDOS2.MODEM>
  108.  
  109. System Requirements:
  110.        IBM PC or close compatible
  111.            at least 45K free memory (65K for file transfers)
  112.        one or more serial ports
  113.        DOS 2.0 or higher
  114.        48-128K disk space or EMS or XMS memory for swapping, depending
  115.          on configuration
  116.  
  117. -------------------------------------------------------------------------------
  118. Installation
  119. ------------
  120.  
  121. Before you use RBcomm for the first time, you need to tell it where to find
  122. its support files and how to talk to the modem.  To do so, copy the RBcomm
  123. files to the directory in which you wish to install them, change to that
  124. directory, and type
  125.  
  126.         RBCONFIG COMM.COM
  127.  
  128. (if COMM.COM is not in the current directory, use the full path, i.e.
  129. C:\COMM\COMM.COM, or RBCONFIG will not be able to find it)
  130.  
  131. Please do not use your original copy.  If you forget to run RBCONFIG, you
  132. will be told to do so when you attempt to run COMM.COM.
  133.  
  134. You will now be asked (via a menu) to fill in several groups of information.
  135.  
  136. Press 'D' to set the directories and extensions to use.
  137.    RBcomm dir:  where the keyboard macro files and dialing directory are stored
  138.    Swap directory: where to store the swap file when running DSZ or COMMAND.COM
  139.         a RAMdisk is ideal for storing the swap file
  140.    Use XMS if available:  if set to N, RBcomm will always swap to disk in the
  141.         directory specified by the previous item.  If set to Y
  142.         (default), RBcomm will swap to XMS memory if there is enough
  143.         available.
  144.    Macro file extension:  default extension to apply to keyboard macro files
  145.    Default macro file:    keyboard macro file to load on startup and hangup
  146.         if this file does not exist, RBcomm will use a built-in set
  147.         of default key bindings
  148.  
  149. Press 'S' to select the serial port to use.  You may setup configurations
  150. for "COM1" through "COM4", as well as the default port to use when not
  151. otherwise indicated in the dialing directory. The values given for "COM3"
  152. and "COM4" need not bear any relationship to the numbering of the actual
  153. serial ports in your system (you could, for example, set them up to be the
  154. same as "COM1" except for the length of the break signal).  RBCOMM does
  155. check that "COM1" and "COM2" exist according to the BIOS data area,
  156. however, to avoid running in a DESQview window which has incorrect settings
  157. for supporting serial communications.  You may specify a separate setup
  158. string for each port. The setup string needs to ensure that the modem echos
  159. back any commands it is sent, and asserts carrier detect only while
  160. actually connected with another modem (for Hayes-compatible "AT" command
  161. sets, "E1&C1")
  162.  
  163. Press 'M' to define the modem setup.  In this section, you need to enter
  164. several strings to be sent to the modem.  Note that you may enter a ^M
  165. (carriage return) by pressing Alt-M (hold down the Alt key and press M), an
  166. Esc by pressing Alt-E, and a control-H by pressing Alt-H, and a DEL (ASCII
  167. 127) by pressing Alt-D.
  168.  
  169. Press 'R' to define the modem's responses.  These should be the minimum
  170. substring that uniquely identifies the response.
  171.  
  172. Press 'P' to setup dialing parameters.  You may specify the name of the
  173. dialing directory, how long to try before declaring a time-out, how long to
  174. wait before trying again, and the break length.  Break length specifies the
  175. length of the signal that is sent when you give the break command (default
  176. Alt-B) in multiples of the standard clock tick of 55ms.
  177.  
  178. Press 'Z' to set the parameters for Zmodem transfers.  There are three sets
  179. of parameters for sending files with Zmodem, allowing you to tailor the
  180. best throughput under up to three separate sets of conditions.    I use the
  181. "fast" set for BBSs, and the "medium" set for my Unix account.  The "slow"
  182. set is configured by default for a system which can't handle full
  183. streaming. Note that PCZ will work just fine in place of DSZ if you set the
  184. program pathname to PCZ instead of DSZ, and provide sufficient memory (PCZ
  185. needs more memory than DSZ).
  186.  
  187. The general DSZ parameters (second item on submenu) allow replacable
  188. parameters introduced by a percent sign.  See the EXEC macro command for
  189. details.  The replacable parameters are expanded each time DSZ is invoked.
  190. Note that the default "portx" will cause DSZ to report the port as COM9,
  191. but it will still use the correct serial port.    You need to use "portx" if
  192. you will be using more than one serial port.
  193.  
  194. Press 'C' to set the colors you want RBcomm to use.  You may select the
  195. default and "underlined" colors, as well as the colors to use on menus.
  196.  
  197. Press 'V' to determine whether 132-column mode should be enabled, whether
  198. to start in 132- or 80-column mode, and the register values needed to set
  199. 132-column mode.  When running under DESQview, RBcomm can tell DESQview to
  200. set the virtual screen size to 132 columns if you specify zero for AX.
  201. DESQview will then display as much as it can at one time.
  202.  
  203. Press 'T' to adjust a number of toggles.
  204.    "Local echo" allows you to turn on half-duplex operation by default.
  205.    "Verbose" sets whether to include terminal control sequences in a log file.
  206.    "Visual bell" specifies whether to flash the screen or sound a beep when a
  207.       ^G is received (internally-generated beeps always use sound).
  208.    "Check for enhanced keyboard" determines whether RBcomm will use the
  209.       enhanced keyboard BIOS calls if it thinks those calls exist.  Some
  210.       systems incorrectly indicate support for those calls.  Set this to
  211.       'N' if RBcomm appears to hang your system.
  212.    "Allow RBcomm to change NumLock" determines whether RBcomm will change the
  213.       state of the NumLock key when it receives the "keypad numeric mode" or
  214.       "keypad application mode" commands.  Disabling the NumLock changes is
  215.       useful for laptop users without a separate number pad.
  216.    "Should backspace send delete" specifies whether the values sent by
  217.       backspace and control-backspace should be exchanged.
  218.    "Save screen" specifies whether the current screen is saved prior to
  219.       executing external programs (except for file transfers) and restored
  220.       afterwards.
  221.  
  222. Finally, press 'O' for miscellaneous options.
  223.    "Heap size" determines how much memory RBcomm allocates for the
  224.       dialing directory, macro files, and macro execution.  This must be
  225.       set to at least 700 bytes more than the sum of the dialing
  226.       directory's size and the largest macro (.RBM) file's size.  A
  227.       larger setting will not harm, but will needlessly use more memory.
  228.       If you get an "out of memory" or "stack full" error message, you
  229.       will need to increase this value.
  230.    "Number of screens" specifies how many virtual terminals to allocate
  231.       space for.  This will become useful for the UnixWindows protocol;
  232.       most users will want to set this value to 1.
  233.    "Time between sends in idle mode" determines how often Idle mode (see
  234.       Alt-I) sends some characters to keep the connection alive when you
  235.       are not actively using RBcomm.
  236.    "String idle mode sends" specifies what characters to send to keep the
  237.       connection alive.
  238.    "Answerback message" allows you to specify the string which RBcomm will
  239.       send when it receives a ^E.  The ANSWERBACK macro command can override
  240.       this setting.
  241.    "Default pace character" determines which character RBcomm will wait for
  242.       after sending each line of text from the file being typed to the
  243.       remote system.  Setting this value to ^@ means that RBcomm will not
  244.       pause after each line.  This setting may be changed while RBcomm is
  245.       running by using the PACECHAR macro command.
  246.    "Use EMS for scrollback" determines whether RBcomm will allocate 32K
  247.       of expanded memory (if available) for the pager and scrollback
  248.       buffers.    If set to Y and at least 32K of EMS is available, RBcomm
  249.       will give you an 6K pager buffer and 26K scrollback buffer regardless
  250.       of the next two settings.
  251.    "Size of non-EMS pager buffer" determines how much memory RBcomm will
  252.       allocate for the file pager's buffer when EMS is not available or
  253.       has been disabled.  Larger values can improve the pager's performance
  254.       on files with long lines, but values greater than 6-8K will not have
  255.       much of an effect unless you have an extremely large screen.  Note
  256.       that setting this value to zero will disable not only the file pager,
  257.       but the directory lister and scrollback display as well, since all
  258.       three use the pager.  If the size of the pager buffer is less than
  259.       the number of characters on the screen in the current mode, the
  260.       directory lister will be unavailable.
  261.    "Size of non-EMS scrollback buffer" determines how much memory RBcomm
  262.       will set aside for storing text received from the serial port.  As
  263.       new text comes in, the oldest will be discarded.    Whatever text is
  264.       in the scrollback buffer may be viewed with Alt-O.
  265.  
  266. On choosing "Quit" from the menu, you will be asked whether to save the
  267. new configuration to disk.  If you specify that you want to save the changes,
  268. the executable on disk will be updated.
  269.  
  270. ---------------------
  271. DESQview Installation
  272. ---------------------
  273.  
  274. After performing the file copy and configuration described in the previous
  275. section, you need to install RBcomm on the DESQview Open Window menu.  In
  276. DESQview, tap the Alt key to bring up the DESQview menu, then press "O" for
  277. the Open Window menu, and "AP" to add a program.  Select "Other", then fill
  278. in the directory in which you've placed the RBcomm files and press Enter.
  279. You will be given the choice of RBcomm, RBcomm plus DSZ, and RBcomm 132col;
  280. select one or more and press Enter.  Now use "CP" from the Open Window menu
  281. to change the paths and/or the keys for starting RBcomm.
  282.  
  283. The only difference between "RBcomm" and "RBcomm + DSZ" is that the former
  284. allocates the minimum amount of memory for RBcomm to run (45K), which is
  285. not enough to invoke DSZ, but does save 20K when you do not need file
  286. transfer capability.  If your environment is particularly large, you may
  287. need to use Change a Program to increase the window sizes by a K or two.
  288. With certain screen sizes, you may also need to give RBcomm 1K of system
  289. memory (on the advanced options screen).
  290.  
  291. To get a 132-column display under DESQview, configure RBcomm to use
  292. 132-column mode and then make a .DVP file using "Change a Program" which
  293. has all fields except for "maximum width" set to the desired values.
  294. Change a Program only allows 127 columns in the window, so choose an
  295. arbitrary size smaller than that.  After pressing Enter to save the .DVP,
  296. run the included DVPWIDTH program to change the maximum width to 132
  297. columns, i.e.
  298.     DVPWIDTH 132 RZ-PIF.DVP
  299. You must give the full name of the .DVP file, including the extension.
  300. Note that Change a Program will force you to change the window's width
  301. if you have set the width greater than 127 and run Change a Program again.
  302.  
  303. If you do not wish to use the DVPWIDTH program, RBcomm can still use
  304. 132-column windows, but you must give it enough "system memory" to store
  305. the entire maximum-size screen.  Whatever memory is used to store the
  306. initial screen size set under "Window Position" is then wasted, so that
  307. size should be set fairly small (such as 20 columns by the desired number
  308. of rows).  If you are not interested in the reason, skip the rest of this
  309. paragraph.  DV normally reuses the same section of memory when resizing the
  310. virtual screen.  However, resizing it beyond the maximum defined by the
  311. .DVP causes an entire new buffer to be allocated.  Thus, minimizing the
  312. "maximum screen size" also minimizes the DESQview overhead by reducing the
  313. size of the screen buffer which gets discarded.
  314.  
  315. RBcomm is sufficiently DESQview-aware to ask DV for the size of the screen.
  316. If you want a 120x60 screen, just set the maximum window size to 120
  317. columns and 60 rows.  DESQview will display as much as it can on your
  318. screen, but RBcomm will use the full size.  If you have enabled 132-column
  319. mode with RBCONFIG, RBcomm will also switch to 132 columns by the given
  320. number of rows when it receives the sequence "<Esc>[?3h".
  321.  
  322. RBcomm refuses to load itself twice on the same serial port when running
  323. under DESQview.  However, when shelled to DOS, you can load another copy in
  324. a different window, but make sure to exit the second copy before returning
  325. from the DOS shell, or the first copy will abort.
  326.  
  327. Finally, RBcomm returns the rest of its time-slice to DV if it doesn't need
  328. a full slice.  This improves the performance of programs in other windows.
  329.  
  330. -----------------------------------------------------------------------------
  331. Dialing Directory
  332. -----------------
  333.  
  334. The dialing directory is a plain text file, containing up to twenty entries
  335. (any additional entries will be ignored).  Each entry consists of two
  336. lines, looking like this, with no blank lines between entries:
  337.  
  338.     Doctor's WOC Inn
  339.     14128817757|4800N81|B|OPUS|password|\\N2
  340.  
  341. The first line contains the description which will be used in the dialing
  342. directory and when dialing.  The second line contains six fields separated
  343. by vertical bars.  These fields are
  344.  
  345.      1. number to dial (direct connection if empty)
  346.      2. modem parameters, containing in order
  347.       baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
  348.              57600)
  349.       parity    (N for none, E for even, O for odd, S for space,
  350.              M for mark)
  351.           data bits (5, 6, 7 or 8)
  352.           stop bits (1 or 2)
  353.           handshake to use when receive buffer is full
  354.                     (H for hardware RTS/CTS, X for software XON/XOFF)
  355.                     (optional, default is hardware)
  356.       timed call flag
  357.             (if handshake present and the character after the handshake
  358.              is T, a short "bip" will sound about 50 seconds into each
  359.              minute after establishing a connection.  Every five
  360.              minutes, the "bip" sounds twice)
  361.       serial port number
  362.             (if handshake is present, following either the handshake
  363.              character or the "T" timed call flag with a comma and
  364.              the number of the serial port will tell RBcomm to switch
  365.              to that port before dialing)
  366.      3. terminal emulation
  367.       A for ANSI with VT102 extensions
  368.       B for ANSI-BBS (same as ANSI, but clearing screen also homes cursor,
  369.               character set switching is disabled, and the AVATAR
  370.               level 0 command set replaces two RBcomm private
  371.               commands)
  372.       V for VT52 with H19 extensions
  373.      4. keyboard macro file to load
  374.      5. password for this system (used by PASSWORD macro command).  Display of
  375.           passwords in the dialing directory may be turned on or off with
  376.           RBCONFIG.
  377.      6. optional modem setup string, minus command lead-in defined by RBCONFIG
  378.       (may include vertical bars).    In the example above, the \\N2 tells
  379.       my modem to use MNP error correction.
  380.  
  381. If the keyboard macro file field is non-empty, the specified file will be
  382. loaded immediately upon successfully connecting with the remote system.
  383. Since each entry in the dialing directory can specify an independent set of
  384. keyboard macros, you can have a different set of keyboard bindings for each
  385. system. If the macro file specifies a binding for the ONLOAD "key", that
  386. macro will be executed immediately.  Further, if the macro file specifies a
  387. binding for the AUTO "key", that macro will be executed immediately after
  388. the ONLOAD macro (if any).
  389.  
  390. The setup string may contain the following special sequences:
  391.         ~    pause for half a second
  392.         \n   send a line feed
  393.         \r   send a carriage return
  394.         \f   send a form feed
  395.         \t   send a horizontal tab
  396.         \a   send a ^G
  397.         \b   send a backspace
  398.     \!   send a break
  399.         \~   send a tilde
  400.         \\   send a backslash
  401.  
  402. Example modem parameters:
  403.     1200E71X     default COM port, 1200 bps, even parity, seven data
  404.              bits, one stop bit, use Xon/Xoff handshake when
  405.              receive buffer fills up
  406.     19200N81HT,2     COM2, 19,200 bps, no parity, eight data bits, one
  407.              stop bit, use hardware handshake, and sound off
  408.              every minute
  409.  
  410. -----------------------------------------------------------------------------
  411. Environment Variables
  412. ---------------------
  413.  
  414. RBcomm uses the following variables in its environment:
  415.  
  416. COMSPEC   specifies which program to load for Shell-to-DOS (Alt-D) and
  417.       Execute-Program (Alt-G).
  418.  
  419. RBCOMM      specifies default commandline options (which may be overridden by
  420.       the commandline).  See below for the valid options.  Note that only
  421.       the first 160 bytes will be used due to internal limitations.
  422.  
  423. SWAPDIR   overrides the default swap directory, where RBcomm stores itself
  424.       when swapping to disk.
  425.  
  426. -----------------------------------------------------------------------------
  427. Commandline Options
  428. -------------------
  429.  
  430. RBcomm may be invoked with one or more options, described below.  These
  431. options are processed from left to right; if an option is present
  432. multiple times, the rightmost instance will be the one in effect.  The
  433. options in the RBCOMM environment variable (if present) are processed
  434. before the commandline, and thus are overridden by the commandline.
  435. Options are not case-sensitive.
  436.  
  437.     -Cn     select COMn, where 'n' may be 1 to 4.  This option overrides
  438.         the default set with RBCONFIG.
  439.  
  440.     -Ddir    set the RBcomm directory to 'dir'.  This option overrides
  441.         the RBCONFIG default.
  442.  
  443.     -Mfile    set the default macro file to use whenever not connected
  444.         to a remote system.  This option overrides the RBCONFIG
  445.         default.  Only the first 8 characters are used.
  446.  
  447.     -Nfile    set the RBcomm dialing directory to 'file'.  This option
  448.         overrides the RBCONFIG default; it replaces the RBCDIAL
  449.         environment variable used by the prior release.  Only the
  450.         first 12 characters are used; if no extension is given,
  451.         it defaults to .DIR.
  452.  
  453.     -Pparm    force default parameters for the current default port.  Instead
  454.         of reading the port's parameters, RBcomm will set them to
  455.         the value specified here.  'parm' is in the same format as
  456.         used in the dialing directory, except that the port number is
  457.         not allowed.  You may intersperse -C and -P options to set
  458.         forced parameters for more than one port.
  459.  
  460.     numlst    a list of numbers to dial as if typed at the Alt-Q (see
  461.         below) prompt
  462.  
  463. -----------------------------------------------------------------------------
  464. Memory Requirements
  465. -------------------
  466.  
  467. RBcomm's memory usage is approximately
  468.  
  469.      38K + heap size + screens + pager buffer + scrollback buffer
  470.  
  471. where
  472.      screens = number_of_screens * (max_size + 352)
  473.      max_size = greater of (2*rows*columns) for 80 and 132-column modes
  474.      pager buffer and scrollback buffer are both 0 if allocated in EMS
  475.  
  476. If there is insufficient memory, the scrollback buffer is shrunk; if there
  477. is still not enough memory, the pager buffer is shrunk as well.
  478.  
  479. -----------------------------------------------------------------------------
  480. Keyboard Commands
  481. -----------------
  482.  
  483. The commands described here may be bound to other keys, but the default
  484. keystroke named here may always be used when preceded by Alt-= (hold down
  485. the Alt key and press the equal sign at the upper right of the typewriter
  486. section of the keyboard).
  487.  
  488. Alt-A   attack dial
  489.  
  490.         Repeatedly dials the number you select from the dialing directory
  491.         until a connection is established.  You may also manually enter a
  492.         number to attack-dial.
  493.  
  494. Alt-B   send break
  495.  
  496. Alt-C   call a number
  497.  
  498.         Dial the number you select from the dialing directory (once only).
  499.     You may also manually enter a number to dial.  If you are currently
  500.     connected to another system, you will be prompted whether to hang
  501.     up.  Press Esc to abort the dial and return to the current session.
  502.     Press "Y" to disconnect and then dial a new number, or "N" to maintain
  503.     the current connection and load new macros and parameters without
  504.     dialing.
  505.  
  506.         Note that the modem parameters always have an "H" appended when neither
  507.         "H" nor "X" is present in the dialing directory, since the handshake
  508.         defaults to hardware.
  509.  
  510. Alt-D   DOS shell
  511.  
  512.         Temporarily exit to DOS.  Type "EXIT" to return to comm session.
  513.     RBcomm will swap itself out of memory, leaving only 448 bytes plus
  514.     its copy of the environment in memory (464 bytes when swapping to
  515.     EMS).  When swapping to disk, a 48K-96K swap file will be created
  516.     in the directory you specified with RBCONFIG, and will be deleted
  517.     when you return to the comm session.  File transfers also create
  518.     the temporary swap file.
  519.  
  520. Alt-E   toggle local echo
  521.  
  522.         By default, RBcomm assumes that the remote system will echo any
  523.         characters you need to see.  After pressing Alt-E once, RBcomm will
  524.         display any characters you type without requiring the remote system
  525.         to echo them.  After pressing Alt-E a second time, RBcomm will once
  526.         again assume that the remote system will echo characters.
  527.  
  528.     Note: you may also toggle local echo by pressing 'L' on the Alt-P
  529.     parameters menu.
  530.  
  531. Alt-F    list files
  532.  
  533.     Display a three-up listing of the files matching a given
  534.     filespec.  This command uses the pager, whose commands are
  535.     listed in a separate section below.  Note that the pager can not
  536.     back up past the beginning of its buffer; for large directories,
  537.     this means that it may display "Top" even though you are not
  538.     at the beginning of the directory listing.  Press Home to get
  539.     back to the beginning if this occurs.
  540.  
  541. Alt-G    Go execute a program
  542.  
  543.     You will be prompted to enter a command.  Everything up to the first
  544.     blank is the program to execute, and the rest of the line is the
  545.     command tail to pass to the program.  If you do not specify an explicit
  546.     path, RBcomm will search your PATH for you; similarly, if you do not
  547.     give an explicit extension, RBcomm will look for both .COM and .EXE
  548.     files.
  549.  
  550.     (to execute a batch file or a COMMAND.COM internal command, you should
  551.     use
  552.          "%VCOMSPEC% /c cmd"
  553.     as the implicit COMMAND.COM invocation from earlier releases has been
  554.     removed)
  555.  
  556. Alt-H   hang up
  557.  
  558.         Terminate the connection.  First drops DTR, and if Carrier Detect is
  559.     still active, sends the modem's hangup string.  The default macro set
  560.     is reloaded from disk (if present) or from the built-in defaults.
  561.     If the CLEANUP "key" has a macro binding, it is executed before
  562.     hanging up; if it includes the LOWER_DTR command, DTR will remain
  563.     dropped.
  564.  
  565. Alt-I   idle
  566.  
  567.         This command allows you to keep a connection alive if you need to step
  568.         away from your computer for a while.  Sends a space followed by a
  569.     backspace every two minutes (configurable with RBCONFIG) until you
  570.     press a key to cancel the command.
  571.  
  572. Alt-J   jump to directory
  573.  
  574.         Pops up a window displaying the current directory.  You may switch to
  575.         a different directory by entering it in place of the displayed
  576.         directory.  Relative paths without a leading slash or backslash will
  577.         change to a subdirectory of the current directory.  If you specify a
  578.         drive letter, that drive will become the current drive as well.
  579.  
  580. Alt-K   unused
  581.  
  582. Alt-L   toggle logging to file
  583.  
  584.         When pressed the first time, you will be asked for the name of a file
  585.         to which all characters received from the remote system will be
  586.     appended (percent signs introduce variable expansions--see the EXEC
  587.     and OPEN_LOG commands below).  When pressed the second time, RBcomm
  588.     will no longer append received characters to that file.  If verbose
  589.     (see Alt-Y) is active, all characters will be appended exactly as
  590.     received, otherwise any command sequences embedded in the received
  591.     data are stripped out.
  592.  
  593. Alt-M   learn macro
  594.  
  595.     When you press Alt-M, you will be asked which key you want to assign
  596.     the macro to.  You may then enter a text string of up to 78 characters
  597.     (if a TEXT macro is already assigned to the key, the current value
  598.     becomes the default value in the input line), using the same editing
  599.     keys used elsewhere.
  600.  
  601. Alt-N   unused
  602.  
  603. Alt-O    scrOllback
  604.     (formerly send file with slowed-down Zmodem; use Alt-S, S)
  605.  
  606.     This command pops up the scrollback pager, allowing you to review
  607.     text which has already scrolled off the screen.  The keystrokes
  608.     which the pager understands are listed in a separate section below.
  609.  
  610. Alt-P   set parameters
  611.  
  612.         This command pops up a menu which allows you to set the following
  613.     parameters:  COM port, speed, parity, parity stripping, handshake,
  614.     backspace translation, visual bell, and terminal emulation.  You may
  615.     also reset the terminal emulation to its initial state, in case the
  616.     remote system leaves you stranded in a strange condition.  Press Esc,
  617.     Enter, or 'R' to exit this menu.
  618.  
  619.         Note that Alt-P will discard any characters which have been received
  620.     but not yet processed, because it always reinitializes the serial
  621.     port when it pops down.
  622.  
  623. Alt-Q    dial queue of numbers
  624.  
  625.         Repeatedly dials each number you specify until a connection is
  626.         established with one of the numbers.  The numbers are dialed in
  627.         round-robin fashion until a connection is established.  A beep will
  628.         sound to notify you of the connection, and the name of the remote
  629.         system and the modem's connect response will be displayed.
  630.  
  631.         You specify the numbers to dial by giving the digit or letter as it
  632.         appears in the dialing directory (case is ignored on letters).  A
  633.         number may be specified more than once, and will be dialed more than
  634.         once during a round of dialing attempts.  As a shortcut, specifying
  635.         an asterisk ('*') instead of a list of numbers will dial all numbers
  636.         in the dialing directory in order.
  637.  
  638. Alt-R   receive file
  639.  
  640.         Pops up a menu allowing you to select the protocol with which you wish
  641.         to receive a file from a remote system.  Press ESCape if you do not
  642.         wish to receive a file.  Note that Zmodem features automatic download,
  643.         so you do not need to press Alt-R unless you wish to give DSZ
  644.     additional parameters.    You may also add additional autodownloading
  645.     protocols--see the WHEN macro command in the next section.
  646.  
  647.     Not listed on the menu:  ^G, ^Y, and ^Z pop up a parameter prompt,
  648.     then proceed with the download specified by the corresponding
  649.     non-control letter.
  650.  
  651. Alt-S   send file
  652.  
  653.         Pops up a menu allowing you to select the protocol with which you wish
  654.         to send a file to a remote system.  Press ESCape if you do not wish to
  655.         send a file.  After selecting a protocol, you will be asked to enter
  656.         the name of the file to send (Ymodem, Ymodem-G, and Zmodem allow
  657.         wildcards and multiple filespecs).
  658.  
  659.         If you press the control character corresponding to the desired
  660.         protocol, the file(s) will be deleted after a successful transfer.
  661.         For batch transfers, only the files corresponding to the first
  662.         filespec are deleted.
  663.  
  664.     Also unlisted on the menu:  pressing 'R' (or ^R) will send with
  665.     Zmodem using the "medium" parameters and pressing 'S' (or ^S) will
  666.     send the file with Zmodem using the "slow" Zmodem parameters installed
  667.     by RBCONFIG.
  668.  
  669. Alt-T   type ASCII file to other system
  670.  
  671.     sends an ASCII file to the remote system, pausing after each line
  672.     for the return to be echoed.  The send may be aborted at any time
  673.     by pressing Escape.
  674.  
  675. Alt-U   load/save user interface as defined in keyboard macro file
  676.  
  677.         Note that keyboard macro files are always stored in the RBcomm
  678.         directory as defined by RBCONFIG.
  679.  
  680.         WORDSTAR.RBM and EMACS.RBM contain the keyboard definitions for using
  681.         WordStar (tm) and Emacs cursor movement commands on the cursor pad
  682.         (i.e. Home goes to the start of the line, etc.)  EMACS.RBM also binds
  683.         all Alt-letter keys to be Esc-letter, making the Alt key into a true
  684.         Emacs meta-key.  You will need to use the Alt-= override to use the
  685.         RBcomm commands while EMACS.RBM is loaded.
  686.  
  687. Alt-V    View file
  688.     (toggle verbose, which used to be on Alt-V, is now on Alt-Y)
  689.  
  690.     Page through a text file.  This uses a simple file lister which
  691.     only understands a few keystrokes; they are listed in a separate
  692.     section below.
  693.  
  694. Alt-W    select Which screen is visible
  695.  
  696.         Displays a menu of the available screens.  Press the indicated
  697.     number to make that screen the visible screen.    If UnixWindows
  698.     is not enabled, the selected screen will also be made the
  699.     active screen (characters received from the serial port are
  700.     displayed on the active screen).  Under UnixWindows, the
  701.     visible and active screens may be different, as the active
  702.     screen is set by commands from the remote system; thus, only
  703.     the visible screen is set by this command.
  704.  
  705. Alt-X    exit
  706.  
  707.         Terminate RBcomm.  If you are still connected to the remote system
  708.         (Carrier Detect asserted), you will be asked whether or not to hang
  709.         up.
  710.  
  711. Alt-Y    toggle verbose
  712.     (previously Alt-V)
  713.  
  714.         Toggles the verbose mode used with Alt-L.  When not logging, the
  715.         control characters which are not used for terminal commands will be
  716.         displayed as ^X when received from the remote system.  When logging to
  717.         a file, terminal command sequences will only be stored in the log file
  718.         if verbose mode is ON.
  719.  
  720. Alt-Z    send file with Zmodem
  721.  
  722.         This command will send the specified file(s) with the "medium" Zmodem
  723.         parameters installed by RBCONFIG.
  724.  
  725. Alt-1,2,3,4,5,6,7,8,9,0  dial first ten numbers in dialing directory
  726.  
  727. Alt-F1 through Alt-F10   dial 11th through 20th number in dialing directory
  728.  
  729. F1      pop up help screen
  730.         
  731.     Displays the contents of the help file for the current macro file
  732.     (if that file is not found, RBcomm attempts to use RBCOMM.HLP).
  733.     Press an Alt or function key to execute the default binding for the
  734.     key.  Escape exits immediately, and any other key pages through the
  735.     help file (if more than 20 lines long).
  736.  
  737. Alt--    cancel any pending WHEN, DELAYED, or WINDOW commands
  738.  
  739. Alt-=   use default binding of next keystroke
  740.  
  741.         If the keyboard has been redefined, pressing Alt-= will allow you to
  742.     access the built-in default definitions (as listed in this section).
  743.     Press Alt-= and then immediately press the key whose default
  744.     definition you want to use.  As a result, Alt-= is the only keystroke
  745.     which may not be redefined.
  746.  
  747. -----------------------------------------------------------------------------
  748. Line Editor
  749. -----------
  750.  
  751. Whenever you are prompted for a line of input, you may use the following
  752. keys to edit the line:
  753.  
  754.         Esc     abort
  755.         Return  finish input
  756.     Home    move to start of line
  757.     ^A    move to start of line
  758.     End    move to end of line
  759.     Right    move a character right
  760.     ^D    move a character right
  761.         Left    move a character left
  762.     ^S    move a character left
  763.     ^Right    move word right (to next blank)
  764.     ^Left    move word left (to previous blank)
  765.     Del    delete the character under the cursor and shift remainder of
  766.         line left
  767.     Backsp    delete the character to the left of the cursor, and shift the
  768.         remainder of the line left
  769.     Alt-G    delete the word to the right of the cursor
  770.     Alt-H    delete the word to the left of the cursor
  771.     ^End    delete from the cursor to the end of the line
  772.     ^T    transpose the two characters to the left of the cursor
  773.     Alt-D    insert an ASCII DEL (127) character
  774.     Alt-P    insert the contents of the cut buffer
  775.     ^Q    treat the next keystroke as a literal character to insert
  776.  
  777. -----------------------------------------------------------------------------
  778. Pager
  779. -----
  780.  
  781. The pager is used to display directories, files, help screens, and the
  782. scrollback buffer.  It is fairly simple, supporting the following
  783. keystrokes:
  784.  
  785.     Up    move up one line
  786.     Down    move down one line
  787.     PgUp    move up one screenfull
  788.     PgDn    move down one screenfull
  789.     Space    move down one screenfull, exiting if already at end of
  790.         file/directory/buffer.
  791.         Right   (files only) shift the left margin right by eight spaces,
  792.         allowing you to view lines extending past the right
  793.         edge of the screen.  When the left margin is other than
  794.         zero, the indent is shown at the right edge of the status
  795.         line.
  796.     Left    (files only) shift the left margin left by eight spaces if
  797.         it is not already zero.
  798.     Home    restart the pager.  For files and directories, you will
  799.         be put back at the beginning of the file; for the scroll-
  800.         back buffer, you will be placed at the end of the buffer.
  801.     Esc    exit from the pager.
  802.  
  803. -----------------------------------------------------------------------------
  804. Error Messages
  805. --------------
  806.  
  807. file not found
  808.     RBcomm was unable to open the requested file.  This may be due to
  809.     wildcards or a misspelling in the filename, an invalid path,
  810.     a lack of file handles (see FILES= in your DOS manual), or a file
  811.     sharing conflict.
  812.  
  813. Function not available
  814.     you attempted to use the file browser, directory lister, or
  815.     scrollback pager when there was no pager buffer allocated (either
  816.     through RBCONFIG or lack of memory), or the pager buffer was too
  817.     small for the directory lister.
  818.  
  819. invalid macro file
  820.     the macro file you wanted to load is either corrupted or from an
  821.     older version of RBcomm which used an incompatible format for macro
  822.     files.    Try recompiling the macro file.
  823.  
  824. MODEM NOT RESPONDING
  825.     RBcomm did not get an acknowledgement from the modem within four
  826.     seconds of the last command.  If you only get this message on attack
  827.     or list dialing, you need to increase the delay before redialing
  828.     with RBCONFIG (under "dialing parameters")--some modems take longer
  829.     to reset after a hangup command than others.
  830.  
  831. --out of memory--
  832.     There was not enough memory to pop up the requested menu or prompt.
  833.     Increase the heap size with RBCONFIG and try again.
  834.  
  835. STACK FULL
  836.     Your macro was so deeply nested that it ran out of space.  This can
  837.     be caused by an infinite recursion in your macro.  Increase the heap
  838.     size with RBCONFIG (under "Other options") and try again.
  839.  
  840. -----------------------------------------------------------------------------
  841. Warnings
  842. --------
  843.  
  844. Don't try to load a TSR while shelled to DOS.  RBcomm won't be able to swap
  845. itself back in and will have to abort.    Your connection will not be broken,
  846. however.
  847.  
  848. Don't mess with the swap file while shelled.  You'll be sorry....  (RBcomm
  849. is able to detect a missing or truncated swap file on returning, but not
  850. other changes)
  851.  
  852. IMPORTANT:  if you are swapping to a floppy drive, DO NOT UNDER ANY
  853. CIRCUMSTANCES replace that floppy disk while shelled to DOS or running a
  854. file transfer.    You will definitely trash the file allocation tables and
  855. directory of the second disk.  This is a problem with DOS itself (at least
  856. through 3.10, later versions may have corrected it) when faced with a
  857. diskette change while a file is open on the diskette which gets removed.
  858. The swap file is such an open file.
  859.  
  860. -----------------------------------------------------------------------------
  861. Known Bugs and Limitations
  862. --------------------------
  863.  
  864. If you are using a serial port which the BIOS does not recognize, RBcomm
  865. will most likely read garbage parameters from the port at startup, requiring
  866. you to set the parameters by hand with Alt-P or the -P commandline option.
  867.  
  868. The pager has trouble with extremely long lines (>500 columns or so).
  869. When encountering such a line, you may not be able to move up or down by
  870. single lines.  PgUp and PgDn will still work, however.
  871.  
  872. RBcomm requires that the EMS page frame contain at least three pages
  873. in order to use EMS for the scrollback and pager buffers, and at least
  874. one page in order to swap to EMS.  This is important when running under
  875. memory managers such as QEMM-386 which allow page frames smaller than
  876. the standard four pages.
  877.  
  878. -----------------------------------------------------------------------------
  879. Macro Compiler
  880. --------------
  881.  
  882. Syntax:  MACRO {t|m} infile outfile
  883. where 't' specifies compilation from text file to keyboard macro file
  884. and 'm' specifies decompilation from macro file to text file
  885. default extensions are .MAC for text files and .RBM for macro files
  886.  
  887.  
  888. Important Note:
  889.     RBcomm v3.1 and later macro files are COMPLETELY INCOMPATIBLE
  890.     with earlier versions.    You must recompile all your macro files.
  891.     If RBcomm doesn't complain, you don't need to recompile.
  892.  
  893. -------------------
  894. Macro File Commands
  895. -------------------
  896.  
  897. Each command has the following form:
  898.  
  899.     keyname  commandword   [args]
  900.  
  901. where keyname specifies to which key the command is to be bound.  Keynames
  902. (which are not case-sensitive) are:
  903.     F1 through F12 for the function keys
  904.        +F1 through +F12 for the shifted function keys
  905.        ^F1 through ^F12 for the control function keys
  906.        @F1 through @F12 for the alt-function keys
  907.        @A through @Z for the alt-letter keys
  908.        @1 through @0 for the alt-digits
  909.        Gray+, Gray-, Gray*, Gray/ for plus, minus, star, slash keys on keypad
  910.        @Plus and @Minus, @Gr*, @Gr/ for Alt-Gray+, Alt-Gray-, Alt-Gray* and
  911.        Alt-Gray/
  912.        Left, Right, Up, Down for the cursor keys on the numeric pad
  913.        Home, End, PgUp, PgDn, Ins, and Del for the other keypad keys
  914.        KP5 for the '5' key on the number pad (enhanced keyboard)
  915.        ^Home, etc. for the control versions of the numberpad keys
  916.        CP_Home     Home key on gray cursor pad
  917.        CP_Up     Up arrow on gray cursor pad
  918.        CP_Down     Down arrow on gray cursor pad
  919.        CP_Enter  Enter key on cursor pad
  920.         etc.
  921.        @Left, @Right, @Up, @Down, @Home, @End, @PgUp, @PgDn, @Ins, @Del for
  922.            Alt- versions of the cursor pad keys
  923.        ^Left, ^Right, etc for Ctrl- versions of the cursor pad keys
  924.        ^Break    for control-break
  925.        @- @= @[ @\ @] @; @' @, @. @/ @` @* for various other Alt-keys
  926.  
  927. There are also some pseudo-keys to which you may assign a macro:
  928.        "OnLoad" is executed any time the macro file is loaded into memory
  929.        "Auto" is executed automatically when a connection is established
  930.        "Reconnect" is executed automatically when reconnecting without
  931.         hanging up and redialing
  932.        "CleanUp" is executed when hanging up if carrier detect is active
  933.        "OnAbort" is executed whenever a macro other than OnAbort aborts and
  934.         displays the **ABORTED** message, just prior to displaying
  935.         the message
  936.  
  937. And there is a no-operation pseudo-key for use by FORCE_CLEANUP:
  938.        "Null" does nothing and returns immediately
  939.  
  940. You may assign macros to control keys by specifying "^x" as the key name,
  941. where "x" is the control key you want to use.  Similarly, you may assign a
  942. macro to a regular key by preceding the character representing the key by a
  943. backslash (i.e. \A for capital 'A', \a for lowercase 'a'). Note that macros
  944. are never in effect when you are prompted for information by RBcomm; they
  945. only affect what (if anything) gets sent to the remote system.
  946.  
  947. Finally, you may use "#nnn" where nnn is the decimal scancode of the key
  948. you wish to assign the macro to (values of 200 through 255 are reserved,
  949. 167 through 199 are currently unused by any key combinations supported by
  950. the BIOS).
  951.  
  952. Note that the cursor pad keys will execute the binding for the
  953. corresponding number pad key if not specifically bound (but not vice
  954. versa).  CP_Enter defaults to the binding for @Enter.
  955.  
  956. The commandword is not case-sensitive, but you must include the underscore
  957. if present and use the entire commandword (abbreviations are not
  958. supported).
  959.  
  960. With the exception of the ANSWERBACK, TEST, TEXT, WAITFOR, and WHEN
  961. commands, all commands which take a string argument pop up a prompt if the
  962. string is empty (i.e. "").  Strings may include the following special
  963. sequences:
  964.     ^x   specified control character
  965.         ^?   ASCII DEL (127)
  966.         \a   ^G (bell)
  967.     \b   backspace
  968.     \e   escape
  969.     \f   form feed
  970.     \n   line feed
  971.         \r   carriage return
  972.     \t   horizontal tab
  973.     \v   vertical tab
  974.     \\   backslash
  975.     \^   carat
  976.     \0   ASCII NUL (for TEXT command only)
  977. For character arguments, you may specify either
  978.     'c'
  979. where the character c is interpreted as for a string, or you may specify its
  980. ASCII value.
  981.  
  982. Everything from a semicolon (unless it is in a string) to the end of the line
  983. is considered a comment, as are blank lines.
  984.  
  985. If a line starts with #include rather than a key name, the specified file
  986. will be compiled into the macro file as if it were part of the current text
  987. file.  Note that the string is processed just like any other strings, so
  988. that you must double any backslashes (or use forward slashes, instead).
  989. Format:
  990.     #INCLUDE  "d:/path/filename"
  991. an extension of .MAC is assumed if no extension is given, and the drive
  992. letter and path are optional (default is current drive and directory).
  993. #INCLUDEs may be nested up to twelve deep.
  994.  
  995. If a line starts with #ignore rather than a key name, any subsequent
  996. occurrences of the keyname following the #ignore will be ignored, just as
  997. if you had already defined a binding for the key.  This is useful when
  998. #include'ing a file if you do not want all the bindings in the included
  999. file.
  1000. Format:
  1001.        #IGNORE    <keyname>
  1002.  
  1003. For readability, you may give names to extended keys with the
  1004.        #DEFKEY <newname> <keynumber>
  1005. command.  User names will be lost on decompiling the macro file, however.
  1006. For example, "#defkey Proc1 199" will let you refer to "Proc1" and "#199"
  1007. interchangeably.
  1008.  
  1009. ABORT
  1010.     abort the current macro or operation as if the user had pressed Esc.
  1011.  
  1012. ABORT_UNTIL
  1013.     Abort any currently executing UNTIL command after the command(s) it
  1014.     controls complete.  If multiple UNTIL commands are nested, each is
  1015.     aborted as the commands it controls complete, until all pending
  1016.     UNTILs have been aborted.  Useful mainly in conjunction with the
  1017.     DELAYED command to provide a timeout on UNTIL loops.
  1018.  
  1019.     See also DELAYED, UNTIL.
  1020.  
  1021. ANSWERBACK "string"
  1022.     sets the answerback message to the specified string.  If the string is
  1023.     empty (i.e. ""), answerback is disabled (making ^E a cursor-positioning
  1024.     command), otherwise, answerback is enabled.
  1025.  
  1026. AT hh:mm:ss
  1027.     execute the following line (or lines if a MULTI) at the specified
  1028.     time.  If the specified time is less than the current time, the
  1029.     command(s) will be executed the next day.  The seconds may be
  1030.     omitted, in which case they default to 0.
  1031.  
  1032.     Note: the command(s) may actually execute later than requested if
  1033.       RBcomm is busy processing incoming characters at the time the
  1034.       command should execute.  The command will execute as soon as RBcomm
  1035.       empties its receive buffer.
  1036.  
  1037.     See also DELAYED.
  1038.  
  1039. AUTO_XFER
  1040.     reenable Zmodem and Puma autodownloads if they have been canceled by
  1041.     an ENDWHEN.  This is functionally equivalent to
  1042.         WHEN 0 "**^XB00"
  1043.            RECEIVE 'Z'
  1044.         WHEN 0 "^X^H^XPuma^X^H^X"
  1045.            RECEIVE 'P'
  1046.     The autodownloads are also reenabled when hanging up, dialing, or
  1047.     loading a new macro file.
  1048.  
  1049.     WARNING: do not invoke while autodownload is enabled, as you will wind
  1050.        up invoking a download multiple times for one download request....
  1051.  
  1052.     See also ENDWHEN, WHEN.
  1053.  
  1054. AUTO_ZMODEM
  1055.     (renamed to AUTO_XFER)  The macro compiler still accepts this
  1056.     command, but issues a warning.  This command will be completely
  1057.     removed in the next release.
  1058.  
  1059. AWAITKEY
  1060.     pause until a key is pressed.  The next function which reads a key
  1061.     will read the key which was pressed.  Returns immediately if there
  1062.     was any typeahead (including RBcomm's key stack).
  1063.  
  1064.     See also KFLUSH.
  1065.  
  1066. BEEP
  1067.     sound the bell.  Useful mainly in conjunction with the MULTI or
  1068.     DELAYED commands (see below).
  1069.  
  1070. BREAK
  1071.     send a break to the remote system
  1072.  
  1073. CALL keyname
  1074.         execute the macro (if any) bound to the specified key and then continue
  1075.     executing the current macro (if inside a MULTI).
  1076.  
  1077.     See also GOTO_KEY, PUSHKEY.
  1078.  
  1079. CANCEL_DELAYED which
  1080.     cancel the specified delayed action.  Currently supported:
  1081.            ALL    cancel all delayed actions
  1082.            LAST   cancel the last executed DELAYED.  If called a second
  1083.               time without an intervening DELAYED, the second call
  1084.               is ignored.
  1085.  
  1086.     See also DELAYED.
  1087.  
  1088. CANCEL_NOTIFY
  1089.     remove the notify window immediately instead of at the end of the
  1090.     configured period of time.
  1091.  
  1092. CHDIR "dir"
  1093.     change the DOS default directory to the specified directory.
  1094.  
  1095. CLOSE_LOG
  1096.     close the current log file.  If logging is off, this command has no
  1097.     effect.
  1098.     See also OPEN_LOG, TOGGLE_LOG.
  1099.  
  1100. CUT num dir "search"
  1101.     search the screen backwards from the current cursor position until
  1102.     the search string (case sensitive) is found, then copy "num"
  1103.     characters in the indicated direction (AFTER or BEFORE) to the cut
  1104.     buffer.  The contents of the cut buffer remain unchanged if the search
  1105.     string is not found (in which case the completion status is set to
  1106.     FAILED for testing by IF or UNTIL).  The cut buffer may be sent to
  1107.     the remote system with the PASTE command, inserted into a line
  1108.     being edited by pressing Alt-P, or inserted with the %C variable
  1109.     expansion.
  1110.  
  1111.     Note that trailing blanks are deleted from the cut buffer.  In
  1112.     addition, the CUT command treats the entire screen (even if a WINDOW
  1113.     command was used to restrict output to a portion of the screen) as a
  1114.     single long line, ignoring all line wrapping for both search and cut.
  1115.  
  1116.     Examples:
  1117.        Screen contains "1234test5678cursor here->" and the cursor is as
  1118.        indicated.  Then
  1119.         CUT 3 BEFORE "test"
  1120.        places "234" into the cut buffer, while
  1121.         CUT 6 AFTER "test"
  1122.        places "5678cu" into the cut buffer.  Further,
  1123.         CUT 7 BEFORE ""
  1124.        will place " here->" into the cut buffer.
  1125.  
  1126.     See also PASTE.
  1127.  
  1128. DELAYED time
  1129.         execute the macro on the next line (or lines if it is a MULTI) the
  1130.     given amount of time from now.    You may have up to six delayed
  1131.     commands active at any given time.  The maximum delay time is 18
  1132.     hours; the macro compiler will complain if you attempt to use a
  1133.     greater delay.    Times are specified as
  1134.         seconds
  1135.         minutes:seconds
  1136.     or    hours:minutes:seconds
  1137.  
  1138.         Note: the command may actually execute later than requested if RBcomm
  1139.           is busy processing incoming characters at the time the command should
  1140.       execute.  The command will execute as soon as RBcomm empties its
  1141.       receive buffer.
  1142.  
  1143.     See also CANCEL_DELAYED, WHEN.
  1144.  
  1145. DIAL number redial
  1146.     dial the specified entry (0-19) from the dialing directory, or pop up
  1147.     the dialing directory if 'number' is PROMPT.  'redial' specifies how
  1148.     to dial:
  1149.         ONCE    make only one attempt
  1150.         ATTACK    try repeatedly until connected
  1151.         RECONNECT    make a single attempt if not connected, or set
  1152.             parameters and password without dialing if already
  1153.             connected
  1154.  
  1155.     See also LISTDIAL, MDIAL.
  1156.  
  1157. DISPLAY "msg"
  1158.     Display the given string at the current cursor position, and update
  1159.     the cursor position to be at the end of the string.  This is similar
  1160.     to the MESSAGE command, but always it always displays at the current
  1161.     position; MESSAGE also does not change the cursor position.  The
  1162.     characters ^A through ^F in the string invoke special actions.    ^C
  1163.     clears from the current position to the end of the line; the other
  1164.     special characters are detailed under "Writing your own Help FIles".
  1165.  
  1166.     See also MESSAGE.
  1167.  
  1168. ECHO ON|OFF
  1169.     ECHO ON forces half-duplex (local echo on) mode, ECHO OFF forces
  1170.     full-duplex (local echo off).
  1171.     (see Alt-E)
  1172.  
  1173.     See also TOGGLE_ECHO.
  1174.  
  1175. ENDWHEN which
  1176.     cancel the specified WHEN command.  Currently supported:
  1177.        ALL           cancel all WHENs except the Zmodem and Puma
  1178.              autodownloads
  1179.        ALL_XFER    cancel all WHENs including the autodownloads
  1180.        LAST        cancel the last executed WHEN.  A second call without
  1181.              an intervening WHEN acts the same as ENDWHEN ALL.
  1182.  
  1183.     See also AUTO_XFER, WHEN.
  1184.  
  1185. EXEC "command-to-execute"
  1186.     everything up to the first blank in the string specifies the program to
  1187.     execute (the PATH will be searched if no explicit path is given, and
  1188.     both .COM and .EXE will be looked for if there is no explicit
  1189.     extension), the remainder of the string is the command tail to pass to
  1190.     the program.  Note that a following IF command will always consider
  1191.     the EXEC to have succeeded if you use COMMAND.COM to run the program
  1192.     with the construct
  1193.         "%VCOMSPEC% /c cmd"
  1194.     due to a misfeature of COMMAND.COM.
  1195.  
  1196.     If SAVE_SCREEN is ON, RBcomm will prompt for a key, then restore
  1197.     the screen to the state it was in before the EXEC.  No message will
  1198.     be displayed if the program returns an error; however, an error
  1199.     message will still be displayed if there was an error while attempting
  1200.     to load the program.
  1201.  
  1202.     Within the command, a percent sign introduces a variable substitution.
  1203.     The following sequences are supported:
  1204.         %a     hexadecimal I/O base address being used
  1205.         %C     contents of the cut buffer (see CUT and PASTE)
  1206.             %d   current date, in format mm-dd-yy
  1207.         %D     current directory, including drive
  1208.         %i     IRQ number being used (0-15)
  1209.         %I     get input from user.  The following characters up to the next
  1210.          percent sign are used as the prompt and then discarded.
  1211.         %M     current macro file name
  1212.         %N     name of current remote system (from dialing directory)
  1213.         %p     port number (1-4)
  1214.         %P     port parameters, in same format as dialing directory
  1215.          display
  1216.         %s     current serial port speed
  1217.         %t     current time, in format hh:mm:ss
  1218.         %V     get an environment variable.  The following characters up to
  1219.          the next percent sign are used as the name of the variable
  1220.          and then discarded.
  1221.         %w     current switch character
  1222.         %%     a percent sign
  1223.  
  1224.     See also EXECN, IF, SHELL.
  1225.  
  1226. EXECN  "command-to-execute"
  1227.     This command is identical to EXEC, except that no error box is
  1228.     displayed in the event of an error.  If SAVE_SCREEN is ON, the
  1229.     screen is restored without pausing for a keystroke.
  1230.  
  1231.     See also EXEC.
  1232.  
  1233. EXIT
  1234.     End RBcomm.  Will prompt you whether or not to hang up if you are
  1235.     still connected to another system.
  1236.  
  1237. FDELETE "filespec"
  1238.     delete the file(s) named by filespec (which may include wildcards).
  1239.     Note that there is no confirmation requested, so use this command
  1240.     with care!!!
  1241.  
  1242.     See also FILES.
  1243.  
  1244. FILES "filespec"
  1245.     display a three-up list of the files matching the filespec.  This
  1246.     uses the file pager described above.
  1247.  
  1248.     See also FDELETE.
  1249.  
  1250. FORCE_CLEANUP keyname
  1251.     execute the following line(s), then execute the macro bound to
  1252.     "keyname" regardless of how the commands are exited (i.e. normally,
  1253.     ABORT, or <Esc>).  FORCE_CLEANUPs may be nested, in which case
  1254.     the innermost one is the only one to execute unless the cleanup
  1255.     code executes an ABORT itself (then execution gets passed to the one
  1256.     enclosing it, etc.).  If no cleanup is needed and the FORCE_CLEANUP
  1257.     is merely being used to prevent a complete abort on Esc, the pseudo-
  1258.     key Null may be used.  Null is guaranteed to perform no action and
  1259.     return immediately.
  1260.  
  1261. GOTO_KEY keyname
  1262.     continue execution with the specified macro (if bound).  Never returns
  1263.     to the current macro.  If the key is not bound (i.e. GOTO_KEY Null),
  1264.     execution resumes at the point from which the current macro was
  1265.     CALLed, effectively producing a return from a nested macro.
  1266.  
  1267.     See also CALL, PUSHKEY.
  1268.  
  1269. HANGUP
  1270.     hang up.  Executes macro bound to "CleanUp" before actually hanging
  1271.     up if carrier detect is active.  After hanging up, the default macro
  1272.     file is reloaded (thus cancelling any remaining WHENs and DELAYEDs).
  1273.  
  1274.     See also HANGUP_ONLY.
  1275.  
  1276. HANGUP_ONLY
  1277.     hang up, but do not execute the "CleanUp" macro or reload macro files.
  1278.  
  1279.     See also HANGUP.
  1280.  
  1281. HELP
  1282.     pop up the help screen.  If you currently have the macro file FOO
  1283.     loaded, RBcomm first attempts to read the file FOO.HLP in the RBcomm
  1284.     directory.  If it is unable to do so, it then attempts to read
  1285.     RBCOMM.HLP.
  1286.  
  1287. IDLE
  1288.     go into idle mode, sending a blank followed by a backspace every 2
  1289.     minutes.  Press Esc to end idle mode.
  1290.  
  1291.     Both the interval and the sequence sent by idle mode may be configured
  1292.     with RBCONFIG.
  1293.  
  1294. IF    SUCCESS|FAILED|CONNECTED|OFFLINE|DV|NOT DV
  1295.     IF SUCCESS and IF FAILED conditionally execute a command based on the
  1296.     completion status of an immediately preceding EXEC, SHELL, SEND,
  1297.     SENDFILE, RECEIVE, RECEIVEFILE, or WAITFOR.  The following line (or
  1298.     lines if a MULTI) is executed only if that prior command was
  1299.     successful in the case of IF SUCCESS, or if it failed in the case of
  1300.     IF FAILED.
  1301.  
  1302.     IF CONNECTED executes the following command if carrier detect is
  1303.     asserted, while IF OFFLINE executes the following command if
  1304.     carrier detect is deasserted.
  1305.  
  1306.     IF DV executes the following command if RBcomm has detected that it
  1307.     is running under DESQview, while IF NOT DV executes the following
  1308.     command only if RBcomm is not running under DESQview.
  1309.  
  1310.     For example, if you want to execute a program only after failing to
  1311.     see a particular string, you would use
  1312.  
  1313.         MULTI
  1314.         WAITFOR 10 "don't run program"
  1315.         IF FAILED
  1316.             EXEC "!someprog args"
  1317.         END
  1318.  
  1319.     See also ABORT_UNTIL, EXEC, SHELL, SEND, RECEIVE, WAITFOR, UNTIL.
  1320.  
  1321. KFLUSH
  1322.     empty the keyboard buffer (including RBcomm's key stack).
  1323.  
  1324.     See also AWAITKEY.
  1325.  
  1326. LEARN
  1327.     start learning a keyboard macro
  1328.  
  1329.     See also UI_MENU.
  1330.  
  1331. LISTDIAL "numbers"
  1332.     dial the specified numbers from the dialing directory repeatedly until
  1333.     a connection is established with one of the numbers.  If the empty
  1334.     string is specified, the user will be prompted for the numbers to dial.
  1335.  
  1336.     See also DIAL, MDIAL.
  1337.  
  1338. LOAD_MACRO "file"
  1339.     load the specified macro file from the RBcomm directory.  If an empty
  1340.     filename is given, the user will be prompted for a name, which
  1341.     defaults to the name of the currently loaded macro file.  The current
  1342.     macro (if any) and any that it had interrupted are aborted.  However,
  1343.     if the interruption occurred during a command of extended duration
  1344.     such as a WAITFOR, that command will complete normally before the
  1345.     macro is aborted.
  1346.  
  1347.     See also SAVE_MACRO, UI_MENU.
  1348.  
  1349. LOG "filename" "message"
  1350.     append the specified message to the named file.  Both the filename
  1351.     and the message may contain variable expansions as described under
  1352.     EXEC.  If the filename is (or expands to) the empty string "", the
  1353.     expanded message is appended to the current log file (if any).
  1354.  
  1355.     See also OPEN_LOG.
  1356.  
  1357. LOWER_DTR
  1358.     requests that DTR remain dropped after the next HANGUP or HANGUP_ONLY
  1359.     command.  The best place to put this command is in your CleanUp macro.
  1360.  
  1361. MDIAL "number" ONCE|ATTACK
  1362.     dial the specified phone number as if it had been entered as the
  1363.     manual number for the dialing directory display.
  1364.  
  1365.     See also DIAL, LISTDIAL.
  1366.  
  1367. MESSAGE row col msg
  1368.     Display the specified message starting at the given row and column on
  1369.     the screen.  If either row or column is 255, use the current row or
  1370.     column.  Does not change the current cursor position, unlike the
  1371.     DISPLAY command.  As with DISPLAY, the characters ^A through ^F
  1372.     specify special actions.
  1373.  
  1374.     See also DISPLAY.
  1375.  
  1376. MESSAGEBOX msg
  1377.     if running under TopView or DESQview, a window with the given message
  1378.     will pop up for three seconds.    This command is ignored otherwise.
  1379.  
  1380.     The message is limited to 40 characters, anything beyond that is
  1381.     ignored.
  1382.  
  1383.     See also NOTIFY, CANCEL_NOTIFY.
  1384.  
  1385. MULTI
  1386.     the following lines, up to but not including a line starting with END,
  1387.     are assigned to the specified key.  The macros assigned to the key
  1388.     may not total more than 253 bytes, and the macro compiler will
  1389.     complain if they do.
  1390.  
  1391.         The format of the following lines is the same as for a regular macro,
  1392.     except that you do not specify a keyname.  For example, to make
  1393.     shift-F2 switch terminal emulation to VT52, use
  1394.  
  1395.     +F2    MULTI
  1396.         PUSHKEY 13 0
  1397.         PUSHKEY 'V' 0
  1398.         PARAM_MENU
  1399.         END
  1400.  
  1401.     Note: you may use { and } on separate lines as synonyms for MULTI
  1402.     and END.
  1403.  
  1404. NOTIFY    msg
  1405.     if running under TopView or DESQview, and RBcomm determines that it is
  1406.     in the background, a window with the given message will pop up for
  1407.     three seconds.    This command is ignored otherwise.
  1408.  
  1409.     The message is limited to 40 characters, anything beyond that is
  1410.     ignored.
  1411.  
  1412.     See also CANCEL_NOTIFY, MESSAGEBOX.
  1413.  
  1414. OPEN_LOG  "file"
  1415.     if logging is on, the current log file will be closed.    Then, the
  1416.     specified log file will be opened (if no name is given, a prompt is
  1417.     popped up).  The same variable expansions which are valid for
  1418.     the EXEC command are applied to the filename which is given (or
  1419.     entered by the user).
  1420.  
  1421.     For example, to allow the environment variable RBLOG to specify the
  1422.     base name of the log file, use
  1423.         OPEN_LOG "%VRBLOG%.LOG"
  1424.  
  1425.     See also EXEC, CLOSE_LOG, TOGGLE_LOG, RECEIVE.
  1426.  
  1427. PACECHAR 'c'
  1428.     set the pace character for the TYPE command to 'c'.  RBcomm waits
  1429.     up to three seconds for the pace character when TYPEing a file to
  1430.     the remote system.  RBcomm will not wait if the pace character is
  1431.     ASCII 0 (^@).
  1432.  
  1433.     See also TYPE.
  1434.  
  1435. PARAM_MENU
  1436.     pop up the "Set Parameters" menu
  1437.  
  1438. PASSWORD
  1439.         send the password defined in the dialing directory.  Does not send
  1440.         a carriage return or any other terminating sequence.
  1441.  
  1442.     See also TEXT, TYPE.
  1443.  
  1444. PASTE
  1445.     send the contents of the cut buffer to the remote system.
  1446.  
  1447.     See also CUT.
  1448.  
  1449. PAUSE num-ticks
  1450.     halt execution for num-ticks/18 seconds.  Useful mainly in conjunction
  1451.     with the MULTI command (see above).
  1452.  
  1453. PUSHKEY key scan
  1454. or
  1455. PUSHKEY keyname
  1456.     put the specified key/scancode pair onto RBcomm's internal keyboard
  1457.     stack, where the last pushed pair will be the next keystroke read
  1458.         by RBcomm.  The stack is currently eight keystrokes in size, and any
  1459.     PUSHKEY executed while the stack is full will simply be ignored.
  1460.     "keyname" may be the name of any keystroke recognized by the macro
  1461.     compiler.
  1462.  
  1463.     Useful mainly in conjunction with the MULTI command (see above).
  1464.  
  1465. RECEIVE 'type'
  1466.     start receiving a file with the specified protocol
  1467.           0    prompt for protocol
  1468.           'A'  ASCII (capture to file--equivalent to OPEN_LOG "")
  1469.           'X'  Xmodem with parameters
  1470.           'K'  Xmodem-K with parameters
  1471.           'Y'  Ymodem
  1472.               '^Y' Ymodem with parameters
  1473.           'G'  Ymodem-G
  1474.               '^G' Ymodem-G with parameters
  1475.           'Z'  Zmodem
  1476.               '^Z' Zmodem with parameters
  1477.  
  1478.     See also IF, OPEN_LOG, SEND, TYPE.
  1479.  
  1480. RECEIVEFILE 'type' "parameters"
  1481.     start receiving using the specified protocol (which may be any of the
  1482.     ones listed for RECEIVE except 0 or 'A'), passing the specified
  1483.     parameters to the file transfer module.  Unlike RECEIVE, this command
  1484.     will not pop up any messages unless it is unable to load the file
  1485.     transfer module; in case of an error, the completion status is set
  1486.     to FAILED.
  1487.  
  1488.     See also RECEIVE, SENDFILE.
  1489.  
  1490. REPEAT times
  1491.     repeat the command on the next line (or lines if a MULTI) the specified
  1492.     number of times.
  1493.  
  1494. RFLUSH
  1495.     clear any characters which may still be in the serial port receive
  1496.     buffer.
  1497.  
  1498.     See also KFLUSH.
  1499.  
  1500. SAVE_MACRO "file"
  1501.     save the current macros to the specified file, located in the RBcomm
  1502.     directory.
  1503.  
  1504.     See also LOAD_MACRO, UI_MENU.
  1505.  
  1506. SAVE_SCREEN ON|OFF
  1507.     determine whether or not to save the current screen while executing
  1508.     external programs (other than file transfer).  The state of this
  1509.     flag slightly modifies the behavior of EXEC, EXECN, and SHELL.
  1510.  
  1511.     See also EXEC, EXECN, SHELL.
  1512.  
  1513. SCROLLBACK
  1514.     bring up the scrollback pager.
  1515.  
  1516. SELECT_SCREEN num
  1517.     select a new screen to be the visible and active screen.  If "num" is
  1518.     PROMPT, displays a menu of the available screens.
  1519.  
  1520. SEND 'type'
  1521.     prepare to send a file with the specified protocol
  1522.           0    prompt for protocol
  1523.           'A'  ASCII
  1524.           'X'  Xmodem
  1525.           'K'  Xmodem-K
  1526.           'Y'  Ymodem
  1527.           'G'  Ymodem-G
  1528.           'Z'  Zmodem
  1529.           'R'  reduced-speed (medium) Zmodem
  1530.           'S'  slow Zmodem
  1531.     control character versions of any of the above ('^X', '^Y', etc) will
  1532.     delete the file(s) corresponding to the first filespec after sending.
  1533.  
  1534.     See also IF, SENDFILE, RECEIVE, TYPE.
  1535.  
  1536. SENDFILE 'type' "file"
  1537.     send the specified file with the given protocol, which may be any of
  1538.     the ones listed for SEND except 0 or 'A'.  Unlike SEND, this command
  1539.     will not pop up any messages unless it is unable to load the file
  1540.     transfer module; in case of an error, the completion status is set
  1541.     to FAILED.
  1542.  
  1543.     See also RECEIVEFILE, SEND.
  1544.  
  1545. SHELL
  1546.     shell to DOS.  If SAVE_SCREEN is ON, the original screen will be
  1547.     restored when you exit from the subshell.
  1548.  
  1549.     See also EXEC, IF.
  1550.  
  1551. TEST EXISTS "filespec"
  1552.     determine whether any files matching the filespec exist.  Sets the
  1553.     status to SUCCESS if at least one exists, FAILED if none.  The status
  1554.     may be checked with IF or UNTIL commands.
  1555.  
  1556.     See also TEST WHEN, IF.
  1557.  
  1558. TEST WHEN "str"
  1559.     determine whether a WHEN with the specified search string is currently
  1560.     active.  Sets the status to SUCCESS if at least one exists, FAILED if
  1561.     there are no WHENs with the specified string.  The status may be
  1562.     checked with IF or UNTIL commands.
  1563.  
  1564.     See also IF, WHEN, TEST EXISTS.
  1565.  
  1566. TEXT "msg"
  1567.     send the specified characters out the comm port.  "msg" is limited to
  1568.     253 characters.
  1569.  
  1570. TOGGLE_ECHO
  1571.     toggle the state of local echoing
  1572.  
  1573.     See also ECHO.
  1574.  
  1575. TOGGLE_LOG
  1576.     if logging is currently on, turns off logging received data to file
  1577.     if logging is off, pops up a prompt for the name of the capture file
  1578.  
  1579.     See also OPEN_LOG, CLOSE_LOG.
  1580.  
  1581. TOGGLE_VERBOSE
  1582.     toggle the state of verbose mode (see Alt-Y)
  1583.  
  1584.     See also VERBOSE.
  1585.  
  1586. TRANSLATE_BS ON|OFF
  1587.     TRANSLATE_BS ON turns on backspace/delete swapping, TRANSLATE_BS OFF
  1588.     turns it off.
  1589.  
  1590. TYPE "file"
  1591.     send the specified file to the remote system as a stream of ASCII
  1592.     characters.  Pauses at the end of each line and waits for the pace
  1593.     character to be echoed (will continue after three seconds even if
  1594.     the echo is not seen).    Equivalent to
  1595.         SEND 'A'
  1596.     if no filename is given.
  1597.  
  1598.     See also PACECHAR, SEND.
  1599.  
  1600. UI_MENU
  1601.     pop up the load/save macro menu
  1602.  
  1603.     See also LEARN, LOAD_MACRO, SAVE_MACRO.
  1604.  
  1605. UNTIL SUCCESS|FAILED|CONNECTED|OFFLINE
  1606.     repeatedly executes the following line (or lines if a MULTI) until
  1607.     the status of the last action is either success for UNTIL SUCCESS
  1608.     or failure for UNTIL FAILED.   UNTIL CONNECTED repeatedly executes
  1609.     the following command until carrier detect becomes active, while
  1610.     UNTIL OFFLINE repeats until carrier detect drops.
  1611.  
  1612.     See also ABORT_UNTIL, IF.
  1613.  
  1614. VERBOSE ON|OFF
  1615.     VERBOSE ON turns on verbose mode, VERBOSE OFF turns off verbose mode.
  1616.     (see Alt-Y)
  1617.  
  1618.     See also TOGGLE_VERBOSE.
  1619.  
  1620. VIEW "filename"
  1621.     display the specified file one screenfull at a time.  Pops up a prompt
  1622.     if the null filename is given.
  1623.  
  1624.     Pressing the space bar displays the next screen, Escape exits the
  1625.     file view.
  1626.  
  1627. WAITFOR timeout "wait-string"
  1628.     wait up to timeout seconds for the specified string of characters to
  1629.     arrive over the comm port.  Useful mainly in conjunction with the
  1630.     MULTI command (see below).
  1631.  
  1632.     You may test whether the string was actually received by following
  1633.     the WAITFOR with IF SUCCESS or IF FAILED (unlike versions prior to
  1634.     3.11, a failed WAITFOR does not abort the MULTI it is a part of).
  1635.  
  1636.     See also IF.
  1637.  
  1638. WHEN    iterations "when-string"
  1639.     execute the command on the following line (or lines if it is a MULTI)
  1640.     whenever the "when-string" is encountered in the data stream coming
  1641.     from the remote system.  After the string has been encountered
  1642.     "iterations" times, the WHEN is automatically canceled (if iterations
  1643.     is zero, the WHEN must be explicitly canceled with ENDWHEN).
  1644.     You may have up to six WHENs active at any time (eight if you cancel
  1645.     the autodownload [see ENDWHEN above]).    All WHENs are canceled on
  1646.     hanging up or dialing a number, and autodownload is re-enabled.
  1647.  
  1648.     WHENs are tested in the order in which they were executed, so multiple
  1649.     WHENs with the same when-string will trigger in the order in which
  1650.     they were asserted.
  1651.  
  1652.     This can be an extremely powerful command.  For example, you can
  1653.     implement another autodownloading (or uploading!) protocol simply by
  1654.     adding
  1655.         WHEN 0 "start-string"
  1656.            EXEC "xfer-program parms"
  1657.     to the AUTO or OnLoad macro.  On CompuServe, you can make Ymodem
  1658.     autodownloading by adding
  1659.                 WHEN 0 "initiate YMODEM receive"
  1660.            RECEIVE 'Y'
  1661.         to the OnLoad macro.
  1662.  
  1663.     The built-in Zmodem autodownload corresponds to
  1664.         WHEN 0 "**^XB00"
  1665.            RECEIVE 'Z'
  1666.     while Zmodem auto-upload can be added with
  1667.         WHEN 0 "**^XB01"
  1668.            SEND 'Z'
  1669.  
  1670.     The standard Puma autodownload is equivalent to the lines
  1671.         WHEN 0 "^X^H^XPuma^X^H^X"
  1672.            RECEIVE 'P'
  1673.     [thanks to Matthew Thomas for publishing his autodownload string!].
  1674.  
  1675.     See also DELAYED, ENDWHEN.
  1676.  
  1677. WINDOW    row col width height
  1678.     limit the terminal emulator to a portion of the full screen.
  1679.  
  1680.     WINDOW 0 0 255 255 will restore use of the full screen regardless of
  1681.     the screen size.
  1682.  
  1683. -----------
  1684. Time Limits
  1685. -----------
  1686.  
  1687. The maximal time intervals which may be specified for various commands are:
  1688.     255 ticks (~14 seconds)     PAUSE
  1689.     255 seconds (4.25 minutes)    WAITFOR
  1690.     18 hours (64800 seconds)    DELAYED
  1691.  
  1692. -----------------------------------------------------------------------------
  1693. Writing your own Help Files
  1694. ---------------------------
  1695.  
  1696. Help files are plain ASCII files with the exception that several control
  1697. characters are used to change character attributes within a line (each
  1698. line starts with the default attributes).
  1699.  
  1700.     ^A  (A)lternate foreground and background colors, thus turning
  1701.         reverse video on or off
  1702.     ^B  toggle the (B)old bit
  1703.     ^D  reset to (D)efault attributes
  1704.     ^E  switch to underlined color as defined by RBCONFIG
  1705.     ^F  toggle (F)lashing (blink bit)
  1706.  
  1707. -----------------------------------------------------------------------------
  1708. Terminal Emulation
  1709. ------------------
  1710.  
  1711. RBcomm supports three terminal emulations.  ANSI provides standard ANSI
  1712. escape sequences plus most VT102 and many VT200 escape sequences.  BBS is
  1713. identical to ANSI except that clearing the screen with Esc-[-J or Esc-[-2-J
  1714. also homes the cursor, character set switching is disabled, and two of
  1715. RBcomm's private commands are replaced by the AVATAR level 0 command set.
  1716. Finally, VT52 replaces many of the Esc-letter sequences in ANSI with the
  1717. actions a VT52 or H19 would perform.  In addition, in all of these modes,
  1718. RBcomm has its own, much more compact command set.
  1719.  
  1720. ------------------
  1721. Control Characters
  1722. ------------------
  1723.  
  1724. ^A    UnixWindows command character (see below for sequences)
  1725. ^B      move cursor right one position
  1726. ^C      move cursor down a line
  1727. ^D      move cursor left one position, does not wrap to previous line
  1728. ^E    send the answerback string to the remote system
  1729. ^F      special sequences (see below)
  1730. ^G      sound bell, or flash screen if visible bell enabled
  1731. ^H      move cursor left one position, wraps to previous line
  1732. ^I      move to next tab stop
  1733. ^J      move cursor down a line, scrolling screen when at bottom
  1734. ^K      insert a blank line
  1735. ^L      clear screen and home cursor
  1736. ^M      move cursor to start of line
  1737. ^N      "shift out"--switch to G1 character set (VT100)
  1738. ^O      "shift in"--switch to G0 character set (VT100)
  1739. ^P    clear rest of line (Note: if AVATAR is in cooked mode, ^P is the
  1740.     "cook" character, causing the next character to have its high three
  1741.     bits cleared; two consecutive ^Ps will be needed to give the
  1742.     clear-line command)
  1743. ^R      clear rest of screen
  1744. ^T      change character attribute to underlined
  1745. ^U      clear underlined attribute
  1746. ^V    (BBS) start of an AVATAR command (see below)
  1747.         (other)  change to reverse video
  1748. ^W      cancel reverse video
  1749. ^X      insert a blank at the cursor's position, push rest of line right
  1750. ^Y    (BBS) repeat the following character the number of times specified by
  1751.           the second character after the ^Y
  1752.         (other)  delete character at cursor position, rest of line shifts left
  1753. ^Z      delete line cursor is on
  1754. ^[      escape sequence (see below)
  1755. ^\      turn on insert mode
  1756. ^]      turn off insert mode
  1757. ^^    move cursor up a line
  1758. ^_      the following two characters (less 32) specify the new cursor
  1759.     column and row.  i.e. ^_-blank-blank homes the cursor.
  1760.  
  1761.  
  1762. ----------------
  1763. Escape Sequences
  1764. ----------------
  1765.  
  1766. Esc-blank-F  turn off eight-bit control characters
  1767. Esc-blank-G  turn on eight-bit control characters.  When eight-bit control
  1768.          characters are enabled, many of the characters from 80h through
  1769.          9Fh are equivalent to Esc-<char-40h>.
  1770. Esc-(   (VT100) next character ('0', '1', '2', 'A', or 'B') sets G0 character
  1771.         set
  1772. Esc-)   (VT100) next character ('0', '1', '2', 'A', or 'B') sets G1 character
  1773.         set
  1774. Esc-#   (VT100) next character sets character size
  1775.         only '8' implemented -- fill screen with 'E's for alignment display
  1776. Esc-7   save cursor
  1777. Esc-8   restore cursor
  1778. Esc-<   set terminal emulation to ANSI
  1779. Esc-=    set keypad application mode (if allowed to change NumLock by RBCONFIG)
  1780. Esc->    set keypad numeric mode (if allowed to change NumLock by RBCONFIG)
  1781. Esc-@   turn on insert mode
  1782. Esc-A   move cursor up
  1783. Esc-B   move cursor down
  1784. Esc-C   move cursor right
  1785. Esc-D   (ANSI) "index"--move cursor down, scroll if at bottom
  1786.         (VT52) move cursor left
  1787. Esc-E   (ANSI) move to start of next line, scroll if at bottom
  1788.     (VT52) clear screen
  1789. Esc-F   (ANSI) not implemented
  1790.         (VT52) select graphics character set
  1791. Esc-G   (ANSI) not implemented
  1792.         (VT52) select text character set
  1793. Esc-H   (ANSI) set horizontal tab at current position
  1794.         (VT52) home cursor
  1795. Esc-I   (ANSI) horizontal tab
  1796.     (VT52) reverse linefeed, scrolls down if already on top line
  1797. Esc-J   (ANSI) not implemented
  1798.         (VT52) clear to end of screen
  1799. Esc-K   (ANSI) not implemented
  1800.         (VT52) clear to end of line
  1801. Esc-L   (ANSI) not implemented
  1802.         (VT52) insert a new line at cursor
  1803. Esc-M   (ANSI) "reverse index"--cursor up, reverse scroll if at top
  1804.         (VT52) delete cursor line
  1805. Esc-N   (ANSI) not implemented
  1806.         (VT52) delete char at cursor, rest of line shifts left
  1807. Esc-O   (ANSI) not implemented
  1808.         (VT52) turn off insert mode
  1809. Esc-Y   move cursor, next two characters are row + 32, column + 32
  1810. Esc-Z   request identification
  1811.         (ANSI) RBcomm returns the string "rbcommN.NNx" where N.NN is the
  1812.                version number and "x" is a single byte identifying implemented
  1813.                capabilities
  1814.            bit 0: multiple screens available if set
  1815.            bit 1: file transfer implemented (always set)
  1816.                    bit 6: always set (makes character printable)
  1817.            bit 7: always clear
  1818.            remaining bits reserved (zero)
  1819.         (VT52) RBcomm returns the string Esc-/-Z, indicating a VT100 emulating
  1820.                a VT52.
  1821. Esc-[   ANSI sequence, see below
  1822. Esc-]    Operating System Command.  The following characters through an Esc-\
  1823.     sequence (maximum 80 characters) are skipped, as this command has
  1824.     no effect.
  1825. Esc-^    ANSI Privacy Message.  The following characters through an Esc-\
  1826.     sequence (maximum 80 characters) are accumulated.  If running under
  1827.     DESQview, the first 40 are displayed in the notification window;
  1828.     otherwise, the accumulated characters are discarded.
  1829. Esc-_    Application Program Command.  The following characters through an
  1830.     Esc-\ sequence (maximum 80 characters) are skipped, as this command
  1831.     has no effect.
  1832. Esc-c   reset to initial state
  1833. Esc-j    save cursor position       (Heath H19)
  1834. Esc-k    restore cursor position    (Heath H19)
  1835. Esc-l    erase line           (Heath H19)
  1836. Esc-p   turn on bold characters
  1837. Esc-q   turn off bold characters
  1838. Esc-v    turn on line wrap       (Heath H19)
  1839. Esc-w    turn off line wrap       (Heath H19)
  1840. Esc-z    reset terminal emulation   (Heath H19)
  1841.  
  1842.  
  1843. --------------
  1844. ANSI Sequences
  1845. --------------
  1846.  
  1847. All of the sequences listed here consist of Esc-[ followed by zero or more
  1848. numbers separated by semicolons followed by the command letter.  Therefore,
  1849. only the command letter will be listed.  X1, X2, etc refer to the specified
  1850. numeric argument, and usually are followed by a default value in
  1851. parentheses.  All cursor positioning commands number rows and columns
  1852. starting at 1.
  1853.  
  1854. blank    extended ANSI sequence (see below)
  1855. $    extended ANSI sequence (see below)
  1856. @       insert X1 (1) blanks, shifting rest of line to the right
  1857. A       move cursor up X1 (1) lines
  1858. B       move cursor down X1 (1) lines
  1859. C       move cursor right X1 (1) positions
  1860. D       move cursor left X1 (1) positions
  1861. E       move cursor down X1 (1) lines, scroll if at bottom
  1862. F       move cursor up X1 (1) lines, scroll if at top
  1863. G       move cursor to position X1 (1) in current line
  1864. H       move cursor to row X1 (1), column X2 (1)
  1865. I       move to X1st (1) following horizontal tab position
  1866. J    case X1 (*):  0  clear from cursor to end of screen
  1867.                       1  clear from start of screen to cursor
  1868.                       2  clear screen
  1869.         * default is 0 for ANSI and VT52, 2 for ANSI-BBS
  1870. K       case X1 (0):  0  clear from cursor to end of line
  1871.                       1  clear from start of line to cursor
  1872.                       2  clear line
  1873. L       insert X1 (1) lines at cursor
  1874. M       delete X1 (1) lines at cursor
  1875. P       delete X1 (1) characters at cursor, rest of line shifts left
  1876. S       scroll up X1 (1) lines
  1877. T       scroll down X1 (1) lines
  1878. U    switch to screen X1 (1) screens later, wrapping back to screen 0
  1879.     if X1 preceded by an equal sign, switch to specified screen
  1880. V       switch to screen X1 (1) screens prior, wrapping to last screen
  1881. X    erase X1 (1) characters starting at cursor position, cursor stays put
  1882. Z       move cursor to X1st (1) preceding horizontal tab position
  1883. `       move cursor to position X1 (1) in current line
  1884. a       move cursor X1 (0) positions from current position in line
  1885. c    device attribute report
  1886.       responds by sending Esc-[-?-6-c (VT102)
  1887. d       move cursor to line X1
  1888. e       move cursor X1 (0) lines from current line
  1889. f       move cursor to row X1 (1), column X2 (1)
  1890. g    case X1 (0):  0   clear horizontal tab at current position
  1891.               3   clear all horizontal tab stops
  1892.               '>' clear all horizontal tab stops, then set tabs every
  1893.               N positions (i.e.  Esc-[->-5-g sets tabs every five
  1894.               columns)
  1895. h       select mode
  1896.     case X1 (0):  ?2  set emulation to ANSI
  1897.               ?3  select 132-column mode (if enabled by RBCONFIG)
  1898.                4  turn on insert mode
  1899.                       ?5  turn on inverted video
  1900.               ?6  turn on scrolling-region-relative cursor positioning
  1901.               (origin mode)
  1902.                       ?7  turn on wrap mode
  1903.               12  turn on local echo
  1904.               20  turn on newline mode (send CRLF when CR pressed)
  1905.              ?25  turn cursor on (make visible)
  1906. i    [media copy--not yet implemented]
  1907. l       reset mode
  1908.         case X1 (0):  ?2  set emulation to VT52
  1909.                       ?3  select 80-column mode
  1910.                4  turn off insert mode
  1911.                       ?5  turn off inverted video
  1912.                       ?6  set top of scrolling region to topmost line, bottom
  1913.               to bottom of screen, and turn off relative cursor
  1914.               positioning (absolute cursor positioning)
  1915.                       ?7  turn off wrap mode
  1916.               12  turn off local echo
  1917.               20  turn off newline mode (send only CR when CR pressed)
  1918.              ?25  turn off cursor (make invisible)
  1919.               Note: may not work on all systems or in all video
  1920.               modes
  1921. m       select graphic rendition
  1922.         for each Xn in order,
  1923.                       0  reset attributes to white on black, turn off reverse
  1924.                          video
  1925.                       1  set bold
  1926.                       4  set underlined
  1927.                       5  set blinking
  1928.                       7  set reverse video
  1929.                       8  set invisible (black on black)
  1930.                      21  turn off bold
  1931.              22  turn off bold
  1932.                      24  turn off underlined
  1933.                      25  turn off blinking
  1934.                      27  turn off reverse video
  1935.              30  set foreground color
  1936.                       -
  1937.                        37
  1938.              40  set background color
  1939.                       -
  1940.                        47
  1941.         Note: Esc-[-m is equivalent to Esc-[-0-m
  1942. n       device status report
  1943.     case X1 (0):  5  report terminal status
  1944.              always sends Esc-[-0-n (terminal OK) to remote
  1945.               6  report cursor position
  1946.                          sends string Esc-[-row-;-col-R to remote system
  1947.              15  printer status
  1948.              sends Esc-[-?-1-3-n (no printer) if no printer defined
  1949.                    Esc-[-?-1-0-n if printer is ready
  1950.                    Esc-[-?-1-1-n if printer is not ready
  1951.                  [currently always sends ?13n]
  1952.                      25  report User Definable Key status
  1953.              always sends Esc-[-?-21-n (UDK's locked)
  1954.              26  report keyboard dialect
  1955.              always sends Esc-[-?-27-;-1-n (US ASCII)
  1956. r       set scrolling region to rows X1 (1) through X2 (lines-on-screen)
  1957. s       save cursor (may not be nested)
  1958. u       restore cursor
  1959. x    request terminal parameters (VT100)
  1960.     case X1 (0):  0  sends back string indicating bits, parity, speed
  1961.               1  sends back string indicating bits, parity, speed
  1962.     the string sent is
  1963.        Esc-[-<id>-;-<parity>-;-<bits>-;-<tspd>-;-<rspd>-;1;0x
  1964.     where <id> is 2 if X1 was 0 and 3 if X1 was 1
  1965.           <parity> is 1 for none, 2 for space, 3 for mark, 4 for odd,
  1966.               and 5 for even
  1967.           <bits> is 1 for 8, 2 for 7, 3 for 6, and 4 for 5 data bits
  1968.           <tspd> and <rspd> are the transmit and receive speeds:
  1969.              16 -> 110 bps
  1970.              32 -> 150 bps
  1971.              48 -> 300 bps
  1972.              56 -> 600 bps
  1973.              64 -> 1200 bps
  1974.              88 -> 2400 bps
  1975.             104 -> 4800 bps
  1976.             112 -> 9600 bps
  1977.             120 -> 19200 bps
  1978.             128 -> 38400 bps
  1979.             136 -> 57600 bps
  1980. z    reset terminal emulation (Heath H19)
  1981.  
  1982.  
  1983. -----------------------
  1984. Extended ANSI sequences
  1985. -----------------------
  1986.  
  1987. If the command character for an ANSI sequence is a blank, the NEXT character
  1988. specifies the actual operation.
  1989.  
  1990. @       scroll left X1 (1) columns
  1991. A       scroll right X1 (1) columns
  1992.  
  1993. If the command character for an ANSI sequence is a dollar sign, the NEXT
  1994. character specifies the actual operation.  These are VT2xx extensions.
  1995.  
  1996. p      ANSI mode control state request
  1997.       always returns CSI X1 ; 0 $ y    (unknown mode)
  1998. u      terminal state request
  1999.       always returns DCS 1 $ ST       (no state information returned)
  2000.  
  2001.  
  2002. ---------------------
  2003. UnixWindows sequences
  2004. ---------------------
  2005.  
  2006. When RBcomm receives a ^A, the following character specifies the actual
  2007. command.  If UnixWindows is enabled, a ^A introduces a UnixWindows command
  2008. at ANY time, even in the middle of another command; when disabled, ^A is a
  2009. normal command sequence introducer.  This distinction is necessary because
  2010. both AVATAR and RBcomm private commands may include ^A within the sequence.
  2011. The UnixWindows commands are encoded as follows:
  2012.  
  2013. +---+---+---+---+---+---+---+---+
  2014. | 0 |dir|  function | parameter |
  2015. +---+---+---+---+---+---+---+---+
  2016.  
  2017. where "dir" is 0 for commands being sent to RBcomm from the remote system
  2018. and 1 for commands sent by RBcomm.  RBcomm currently supports the following
  2019. functions:  [Note: this is not yet enough to successfully run UnixWin]
  2020.  
  2021. 0  NEWW   [not yet implemented]
  2022.  
  2023. 1  KILLW  [not yet implemented]
  2024.  
  2025. 2  SELIN  The parameter of this function specifies which "window" will
  2026.       display characters received from the serial port.  UW windows
  2027.       are numbered from 1 to 7 and mapped to RBcomm screens 0 through
  2028.       6.  UW window 0 does not exist; if function 2 is invoked with
  2029.       parameter 0, the command is ignored.
  2030.  
  2031. 3  SELOUT This command is never sent by the remote host, and is thus
  2032.       ignored
  2033.  
  2034. 4  WINOPT [not yet implemented]
  2035.  
  2036. 5  META   If the parameter is 0, set the high bit of the next received
  2037.       character before processing it.  If the next character is a ^A
  2038.       UnixWindows command character, this command will apply to the
  2039.       next non-UW character (or the control character produced by
  2040.       function 6 below)
  2041.       If the parameter is one of the following, act as if the specified
  2042.       character had been received; otherwise, ignore the command.
  2043.       parameter 1 = char 129
  2044.       parameter 2 = char 145
  2045.       parameter 3 = char 147
  2046.  
  2047. 6  CTRL   if the parameter is one of the following, act as if the specified
  2048.       control character had been received; otherwise, ignore the command.
  2049.       If function 5 was received immediately prior to this command, the
  2050.       high bit will be set.
  2051.           1   ^A
  2052.       2   ^Q
  2053.       3   ^S
  2054.  
  2055. 7  MAINT  the parameter specifies one of a number of maintenance functions:
  2056.       0   ENTRY  sent by UW server on startup.  RBcomm enables the
  2057.              UnixWindows protocol on receiving this command.
  2058.       2   ASKPCL remote system requests the start of protocol negotiation.
  2059.                      RBcomm responds with CANPCL 1 (the most basic protocol).
  2060.       3   CANPCL remote system specifies a protocol it is capable of
  2061.              supporting in the following byte (1Fh is added to the
  2062.              protocol number to make it printable).  If protocol 1
  2063.              specified, RBcomm responds with SETPCL 1, otherwise it
  2064.              responds with CANPCL 1.
  2065.       4   SETPCL remote system specifies a protocol which both ends are
  2066.              to use.  The protocol is sent in the next byte, with 1Fh
  2067.              added to make it printable.  As RBcomm only supports
  2068.              protocol 1, this function is currently ignored.
  2069.       7   EXIT   sent by UW server on shutdown.  RBcomm disables the
  2070.              UnixWindows protocol on receiving this command.
  2071.  
  2072.  
  2073. ------------------------
  2074. Special RBcomm sequences
  2075. ------------------------
  2076.  
  2077. When RBcomm receives a ^F, the following character specifies the actual
  2078. command.
  2079.  
  2080. ^x      display the IBM PC screen character corresponding to the control
  2081.         character
  2082. 0       turn off visual bell, ^G will beep
  2083. 1       turn on visual bell, ^G will flash the screen, but internally
  2084.         generated beeps still sound
  2085. 2       flash the screen
  2086. 3    beep even if visual bell turned on
  2087. 4       fill area.  Identical to AVATAR ^V^M (see below) but does not cancel
  2088.     insert mode.
  2089. 5    repeat character.  Identical to AVATAR ^Y (see above)
  2090. 6    repeat pattern.  Identical to AVATAR ^V^Y (see below)
  2091. :    disable the UnixWindows protocol
  2092. ;    enable the UnixWindows protocol
  2093. <    set terminal emulation to VT102/ANSI.  Does not affect any other
  2094.       settings
  2095. =    set terminal emulation to ANSI-BBS.  Does not affect any other
  2096.       settings.
  2097. >    set terminal emulation to VT52.  Does not affect any other settings.
  2098. ?    query terminal emulation type.    Sends back <127><type> where type is
  2099.       'A' for VT102/ANSI, 'B' for ANSI-BBS, or 'V' for VT52.  The type
  2100.       is converted to lower case if the UnixWindows protocol is enabled.
  2101. @       send identification (see Esc-Z)
  2102. A    [obsolete--this command no longer does anything]
  2103. B    if next character is '0' through '8' switch to the specified
  2104.     screen, provided that memory was allocated for it at startup.
  2105.     Sends a response of 127-<digit>-<status> to the remote system,
  2106.     where the digit is the screen number from the ^FB command, and
  2107.     status is 'Y' if the screen exists or 'N' if it doesn't.  It is
  2108.     the remote system's responsibility to redraw the screen if the
  2109.     response is 'N'.
  2110. C    if next character is '0' through '8' and the specified screen was
  2111.     allocated at startup, clear that screen to blanks.
  2112.  
  2113. ------------------------
  2114. AVATAR command sequences
  2115. ------------------------
  2116.  
  2117. ^V^A    set screen attribute to low seven bits of following character
  2118. ^V^B    set blink
  2119. ^V^C    move cursor up a line
  2120. ^V^D    move cursor down a line
  2121. ^V^E    move cursor left one space
  2122. ^V^F    move cursor right one space
  2123. ^V^G    clear from cursor to end of line
  2124. ^V^H<r><c>  move cursor to row <r> and column <c>, where the upper left corner
  2125.             is 1,1
  2126. ^V^I    turn on insert mode until next AVATAR command (except ^Y and ^V^Y)
  2127. ^V^J    scroll area up.  Next five characters specify number of lines to
  2128.         scroll, top margin, left margin, bottom margin, and right margin (all
  2129.         margins are based on 1,1 being the upper left corner of the screen)
  2130. ^V^K    scroll area down.  Next five characters are as for ^V^J
  2131. ^V^L    clear area.  Next three characters specify screen attribute for cleared
  2132.         area, number of lines less one, and number of columns less one.  The
  2133.         blink bit of the attribute is ignored, and the current display attribute
  2134.     is set to the attribute of the cleared area.  If the requested area
  2135.     extends beyond the current window limits, it will be truncated to fit.
  2136. ^V^M    fill area.  Next four characters specify screen attribute for filled
  2137.         area, character to fill with, number of lines less one, and number of
  2138.         columns less one.  The current display attribute is set to the filled
  2139.     attribute with blinking turned off.  If the requested area extends
  2140.     beyond the current window limits, it will be truncated to fit.
  2141. ^V^N    delete character at cursor position, shifting the remainder of the
  2142.     line.
  2143.  
  2144. The following commands (except for ^V^Y) are Level 1 extensions.  They
  2145. are not fully implemented, and are not expected to be completely
  2146. correct, as the official specifications have just (1/20/91) been
  2147. published, and I have not had time to implement and test everything.  In
  2148. cases where the official specs differ from the sketchy information I had
  2149. to work with, the behavior will be incorrect.  Those commands marked
  2150. [not implemented] will merely be skipped without any further processing.
  2151.  
  2152. ^V^O    turn clockwise mode on [not implemented]
  2153. ^V^P    not used
  2154. ^V^Q    query.    Next character specifies the type of query
  2155.     ^Q  get driver version info.  Returns the string
  2156.            "AVT0,rbcommN.NNc\r"
  2157.         where N.NN is the RBcomm version and c is the capability byte
  2158.         (see Esc-Z).  This identifies RBcomm as complying with the AVATAR
  2159.         level 0 specification, since level 1 support is still incomplete.
  2160. ^V^R    reset AVATAR [not implemented]
  2161. ^V^S    make a sound.  The next three characters specify the note number,
  2162.     octave, and duration in tenths of a second.  The note is computed as
  2163.         (note-'A')*2 + sharp
  2164.     The current implementation does not queue any tones unless RBcomm is
  2165.     running under DESQview (which can queue notes).
  2166. ^V^T    highlight character at cursor position.  Next character specifies new
  2167.     attribute.
  2168. ^V^U    highlight window.  Next two characters specify the window handle and
  2169.     new attribute.
  2170. ^V^V    define window.    Next six characters specify the window handle, default
  2171.     attribute, top margin, left margin, bottom margin, and right margin.
  2172.     The default attribute is also the initial current attribute for the
  2173.     new window.  Note: window 0 can not be redefined.
  2174. ^V^W    switch to window.  The next character specifies the handle of the
  2175.      window to switch to.
  2176. ^V^X    flush input [not implemented]
  2177. ^V^Y    repeat pattern.  The following character specifies the length of the
  2178.         pattern to be repeated, followed by the pattern, and finally followed
  2179.         by a single character indicating the number of times to repeat the
  2180.     pattern.  The pattern may contain command sequences, but is limited
  2181.     to 80 characters (longer patterns are truncated to 80 characters).
  2182. ^V^\    go to bed [not implemented]
  2183. ^V^]    wake up [not implemented]
  2184. ^V^^    start vertical output [not implemented]
  2185. ^V^_    start horizontal output [not implemented]
  2186. ^V!    poke char/attr to physical screen.  The next four characters specify
  2187.     the character and attribute to poke, and the row and column at which
  2188.     to display that character and attribute.
  2189. ^V"     turn off line wrap
  2190. ^V#    wrap in zigzag mode [not implemented]
  2191. ^V$    turn on line wrap
  2192. ^V%    reverse direction of linefeeds [not implemented]
  2193. ^V&    linefeeds move in normal direction [not implemented]
  2194. ^V'     set cursor type.  The next character specifies the cursor's shape:
  2195.       ^A return to default (startup) cursor shape
  2196.       ^B make cursor invisible (does not work on all systems)
  2197.       ^C block cursor, covering entire character cell
  2198.       otherwise, this command is ignored
  2199. ^V(    output in forward direction [not implemented]
  2200. ^V)    output in reverse direction [not implemented]
  2201. ^V*    system pause [not implemented]    The next character specifies the
  2202.     duration in tenths of a second.
  2203. ^V+    insert a line
  2204. ^V,    insert a blank column at the current cursor position
  2205. ^V-    delete current line
  2206. ^V.    delete current column
  2207. ^V/    set/reset static mode [not implemented]  The next character specifies
  2208.     whether or not the cursor should be advanced after outputting a
  2209.     character to the screen.
  2210. ^V0     highlight from cursor to end of line.  The next character specifies
  2211.      the new attribute to be applied to the rest of the line.
  2212. ^V1    highlight from start of line to cursor.  The next character specifies
  2213.     the new attribute to be applied to the beginning of the line.
  2214. ^V:    keyboard mode.    The next character specifies the mode.    RBcomm
  2215.     always returns ^V:0 (default mode), as it does not support this
  2216.     command.
  2217. ^V<    scroll left.  The next five characters specify the number of columns
  2218.     to scroll, the top margin, left margin, bottom margin, and right
  2219.     margin of the area to scroll.
  2220. ^V=    set parser mode.  If the next character ANDed with 1Fh is ^R or ^C,
  2221.     set the mode to raw or cooked, respectively.  In cooked mode, the
  2222.     character immediately following a ^P is ANDed with 1Fh, and the result
  2223.     is treated as if it had arrived from the remote system instead of the
  2224.     ^P sequence.
  2225. ^V>     scroll right.  The next five characters are as for ^V<
  2226. ^V?    peek at physical screen.  The next two characters specify the row and
  2227.     column at which to peek.  RBcomm returns the poke command (see ^V!)
  2228.     needed to restore the given character position to its current state.
  2229.  
  2230. -----------------------------------------------------------------------------
  2231. Acknowledgements
  2232. ----------------
  2233.  
  2234. Thanks to Thomas Zerucha for his numerous comments and suggestions, many of
  2235. which have been implemented.
  2236.  
  2237. Thanks to Walter Cox for his comments and suggestions on v2.81, one of the
  2238. included keyboard bindings, and his patience in testing new versions.
  2239.  
  2240. Thanks to Mike Weaver for his comments and suggestions, some of which have
  2241. been implemented.
  2242.  
  2243. Thanks to Dave Doren for banging on the macro language and reporting bugs
  2244. and possible enhancements.
  2245.  
  2246. -----------------------------------------------------------------------------
  2247. Program History
  2248. ---------------
  2249.  
  2250. v2.72  9/3/89   first public release
  2251. v2.81  10/4/89    second public release
  2252. v3.01  1/6/90    third public release
  2253. v3.12  4/28/90    fourth public release
  2254. v3.13  6/23/90    macro compiler bugfixes (e.g. IF CONNECTED/OFFLINE now work)
  2255.         manual dial before directory dial now uses proper port
  2256.         added IF DV and IF NOT DV commands
  2257. v3.14  6/30/90    added WINDOW, FORCE_CLEANUP, and HANGUP_ONLY commands
  2258.         now able to reconnect without dropping carrier
  2259.         added %V, %d, %t variable expansions
  2260.         OPEN_LOG now expands variables
  2261.         time limit on DELAYED raised to 18 hours
  2262. v3.15  7/7/90    added AT, LOG, and EXECN commands
  2263.         internal changes
  2264. v3.16  7/14/90    made Puma autodownload present by default
  2265.         added RBCDIAL environment variable
  2266.         added REPEAT, CUT and PASTE macro commands
  2267.         added OnAbort and Null pseudokeys
  2268. v3.20  7/22/90    internal changes
  2269.         added TEST WHEN/TEST EXISTS/RFLUSH/GOTO_KEY commands
  2270.                 CUT now sets SUCCESS/FAILED
  2271. v3.21  7/29/90    fixed problems with GOTO_KEY
  2272.         (fifth public release)
  2273. v3.22  9/9/90    switched from spawnlo() to spawnlpo(), adjusted Alt-G
  2274.         added DISPLAY command, %N variable expansion
  2275.         stubbed out AVATAR level 1 support
  2276.         (unreleased)
  2277. v3.23  9/23/90    enhanced input line editor
  2278.         fixed subtle bug in environment reading
  2279.         added MDIAL command, %w variable expansion
  2280.         continued adding AVATAR level 1 support
  2281.         (unreleased)
  2282. v3.24  10/6/90    size optimizations
  2283.         added PACECHAR command, SWAPDIR environment variable
  2284.         (limited release)
  2285. v3.25  10/21/90 added more AVATAR level 1 functions, swap to EMS
  2286.         fixed scrolling-region/cursor-move interaction bug
  2287.         internal changes
  2288.         (limited release)
  2289. v3.26  11/25/90 more internal changes and size optimizations
  2290.         OPEN_LOG in OnLoad macro now works in all cases
  2291.         (unreleased)
  2292. v3.27  12/9/90    added SELECT_SCREEN command on Alt-W
  2293.         more UnixWindows functions
  2294.         (limited release)
  2295. v3.28  12/21/90    added commandline options
  2296.         some more AVATAR level 1 functions
  2297.         new DVPWIDTH program for 132 column DESQview windows
  2298.         (limited release)
  2299. v3.30  1/13/91    completely rewrote file browser, implemented scrollback
  2300.         FILES command now uses new browser
  2301.         added SCROLLBACK, SAVE_SCREEN commands
  2302.         (limited beta release)
  2303. v3.31  2/3/91    bugfixes to scrollback
  2304.         some more AVATAR level 1 functions
  2305.         (sixth public release)
  2306.